Skip to content
Code-Schnipsel Gruppen Projekte
Commit 1237f475 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

fix: mysql strict

Übergeordneter 7bc8cb9f
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
werden angezeigt mit 169 Ergänzungen und 48 Löschungen
......@@ -14,7 +14,12 @@
function () {
$User = QUI::getUserBySession();
$Orders = QUI\ERP\Order\Handler::getInstance();
$Order = $Orders->getLastOrderInProcessFromUser($User);
try {
$Order = $Orders->getLastOrderInProcessFromUser($User);
} catch (QUI\Exception $Exception) {
$Order = QUI\ERP\Order\Factory::getInstance()->createOrderProcess();
}
return $Order->toArray();
},
......
/**
* @module package/quiqqer/order/bin/frontend/classes/Basket
*
* @require qui/QUI
* @require qui/classes/DOM
* @require Ajax
* @require Locale
*/
define('package/quiqqer/order/bin/frontend/classes/Basket', [
......@@ -45,7 +40,6 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
// basket from user
if (QUIQQER_USER && QUIQQER_USER.id) {
return this.loadLastOrder().then(function () {
console.warn(this.$articles);
this.$isLoaded = true;
this.fireEvent('refresh', [this]);
}.bind(this));
......@@ -164,6 +158,10 @@ define('package/quiqqer/order/bin/frontend/classes/Basket', [
* @return {Promise}
*/
$loadOrderData: function (data) {
if (data === null || typeof data.articles === 'undefined') {
return Promise.reject();
}
var articles = data.articles;
this.$orderid = data.id;
......
/**
* @module package/quiqqer/order/bin/frontend/controls/OrderProcess
*
* @require qui/QUI
* @require qui/controls/Control
* @require qui/controls/loader/Loader
* @require qui/utils/Form
* @require package/quiqqer/order/bin/frontend/Basket
* @require Ajax
* @require Locale
*/
define('package/quiqqer/order/bin/frontend/controls/OrderProcess', [
......
/**
* @module package/quiqqer/order/bin/frontend/controls/order/Window
*
* @require qui/QUI
* @require qui/controls/Control
* @require qui/controls/windows/Confirm
* @require package/quiqqer/watchlist/bin/controls/frontend/Watchlist
* @require package/quiqqer/order/bin/frontend/controls/Ordering
* @require Locale
*/
define('package/quiqqer/order/bin/frontend/controls/order/Window', [
......
......@@ -4,9 +4,11 @@
<global>
<table name="orders">
<field type="BIGINT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY">id</field>
<field type="BIGINT(10) NOT NULL">parent_order</field> <!-- Für aufgesplittete Bestellungen -->
<field type="INT NOT NULL">invoice_id</field> <!-- nur setzen wenn invoice gebucht ist -->
<field type="INT NOT NULL">temporary_invoice_id</field> <!-- nur setzen wenn invoice gebucht ist -->
<field type="BIGINT(10) NULL DEFAULT NULL">order_process_id</field>
<field type="BIGINT(10) NULL DEFAULT NULL">parent_order</field> <!-- Für aufgesplittete Bestellungen -->
<field type="INT NULL DEFAULT NULL">invoice_id</field> <!-- nur setzen wenn invoice gebucht ist -->
<field type="INT NULL DEFAULT NULL">temporary_invoice_id
</field> <!-- nur setzen wenn invoice gebucht ist -->
<field type="INT NOT NULL">status</field>
<field type="INT NOT NULL">customerId</field>
......@@ -17,8 +19,8 @@
<field type="TEXT NULL">articles</field>
<field type="TEXT NULL">data</field>
<field type="INT(11) NOT NULL">payment_id</field>
<field type="VARCHAR(255) NOT NULL">payment_method</field>
<field type="INT(11) NULL DEFAULT NULL">payment_id</field>
<field type="VARCHAR(255) NULL DEFAULT NULL">payment_method</field>
<field type="TEXT NULL">payment_data</field> <!-- muss verschlüsselt sein -->
<field type="DATETIME NULL DEFAULT NULL">payment_time</field>
<field type="TEXT NULL">payment_address</field>
......@@ -39,8 +41,9 @@
<table name="orders_process">
<field type="BIGINT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY">id</field>
<field type="BIGINT(10) NOT NULL">parent_order</field> <!-- Für aufgesplittete Bestellungen -->
<field type="INT NOT NULL">invoice_id</field> <!-- nur setzen wenn invoice gebucht ist -->
<field type="BIGINT(10) NULL DEFAULT NULL">order_id</field> <!-- Für aufgesplittete Bestellungen -->
<field type="BIGINT(10) NULL DEFAULT NULL">parent_order</field> <!-- Für aufgesplittete Bestellungen -->
<field type="INT NULL DEFAULT NULL">invoice_id</field> <!-- nur setzen wenn invoice gebucht ist -->
<field type="INT NOT NULL">status</field>
<field type="INT NOT NULL">customerId</field>
......@@ -52,8 +55,8 @@
<field type="TEXT NULL">data</field>
<field type="TEXT NULL">comments</field>
<field type="INT(11) NOT NULL">payment_id</field>
<field type="VARCHAR(255) NOT NULL">payment_method</field>
<field type="INT(11) NULL DEFAULT NULL">payment_id</field>
<field type="VARCHAR(255) NULL DEFAULT NULL">payment_method</field>
<field type="TEXT NULL">payment_data</field> <!-- muss verschlüsselt sein -->
<field type="DATETIME NULL DEFAULT NULL">payment_time</field>
<field type="TEXT NULL">payment_address</field>
......
......@@ -253,6 +253,14 @@
You will receive a confirmation to your e-mail address.
]]></en>
</locale>
<locale name="ordering.step.checkout.billing.address">
<de><![CDATA[Rechnungsaddresse]]></de>
<en><![CDATA[Billing address]]></en>
</locale>
<locale name="ordering.step.checkout.payment.shipping">
<de><![CDATA[Zahlung und Versand]]></de>
<en><![CDATA[Payment and shipping]]></en>
</locale>
<locale name="salutation">
<de><![CDATA[Anrede]]></de>
......@@ -286,6 +294,15 @@
<de><![CDATA[Land]]></de>
<en><![CDATA[Country]]></en>
</locale>
<locale name="exception.no.orders.found">
<de><![CDATA[Es wurden keine Bestellungen gefunden.]]></de>
<en><![CDATA[No orders were found.]]></en>
</locale>
<locale name="exception.order.not.found">
<de><![CDATA[Die gewünschte Bestellunge wurde nicht gefunden.]]></de>
<en><![CDATA[The requested order was not found.]]></en>
</locale>
</groups>
<groups name="quiqqer/order" datatype="js">
......
......@@ -343,6 +343,21 @@ public function getData()
return $this->data;
}
/**
* Return a data entry
*
* @param string $key
* @return mixed|null
*/
public function getDataEntry($key)
{
if (isset($this->data[$key])) {
return $this->data[$key];
}
return null;
}
/**
* Return the hash
*
......@@ -446,6 +461,7 @@ public function setDeliveryAddress($address)
{
if ($address instanceof QUI\ERP\Address) {
$this->addressDelivery = $address->getAttributes();
return;
}
......@@ -463,6 +479,7 @@ public function setInvoiceAddress($address)
{
if ($address instanceof QUI\ERP\Address) {
$this->addressInvoice = $address->getAttributes();
return;
}
......@@ -547,6 +564,7 @@ public function setCustomer($User)
if ($User instanceof QUI\ERP\User) {
$this->Customer = $User;
$this->customerId = $User->getId();
return;
}
......
......@@ -29,4 +29,9 @@
.quiqqer-order-step-checkout-payments-payment span {
float: left;
padding: 10px;
}
.quiqqer-order-step-checkout-gateway {
}
\ No newline at end of file
{if isset($Gateway)}
<section class="quiqqer-order-step-checkout quiqqer-order-step-checkout-gateway">
<header>
<h1>{locale group="quiqqer/order" var="ordering.step.title.CheckoutPayment"}</h1>
</header>
{locale group="quiqqer/order" var="ordering.step.checkoutPayment.text"}
GATEWAY
</section>
{else}
<section class="quiqqer-order-step-checkout">
<header>
<h1>{locale group="quiqqer/order" var="ordering.step.title.Checkout"}</h1>
......@@ -6,12 +19,12 @@
{locale group="quiqqer/order" var="ordering.step.checkout.text"}
<div class="quiqqer-order-step-checkout-invoiceAddress">
<h2>Rechnungsaddresse</h2>
<h2>{locale group="quiqqer/order" var="ordering.step.checkout.billing.address"}</h2>
{$InvoiceAddress->render()}
</div>
<div class="quiqqer-order-step-checkout-payments">
<h2>Zahlung und Versand</h2>
<h2>{locale group="quiqqer/order" var="ordering.step.checkout.payment.shipping"}</h2>
<div class="quiqqer-order-step-checkout-payments-payment">
<img src="{$Payment->getPaymentType()->getIcon()}"/>
<span>{$Payment->getTitle()}</span>
......@@ -22,4 +35,5 @@
{$Articles->render()}
</div>
</section>
\ No newline at end of file
</section>
{/if}}
\ No newline at end of file
......@@ -31,7 +31,7 @@ public function __construct($attributes = array())
{
parent::__construct($attributes);
$this->addCSSFile(dirname(__FILE__) . '/Checkout.css');
$this->addCSSFile(dirname(__FILE__).'/Checkout.css');
}
/**
......@@ -46,6 +46,15 @@ public function getBody()
$Articles = $Order->getArticles()->toUniqueList();
$Articles->hideHeader();
if ($Order->getDataEntry('orderedWithCosts') == 1) {
$Payment = $Order->getPayment();
$payment = $Order->getDataEntry('orderedWithCostsPayment');
if ($payment == $Payment->getId() && $Payment->getPaymentType()->isGateway()) {
$Engine->assign('Gateway', $Payment);
}
}
$Engine->assign(array(
'User' => $Order->getCustomer(),
'InvoiceAddress' => $Order->getInvoiceAddress(),
......@@ -54,7 +63,7 @@ public function getBody()
'Articles' => $Articles
));
return $Engine->fetch(dirname(__FILE__) . '/Checkout.html');
return $Engine->fetch(dirname(__FILE__).'/Checkout.html');
}
/**
......@@ -79,7 +88,21 @@ public function validate()
// TODO: Implement validate() method.
}
/**
* Order was ordered with costs
*/
public function save()
{
$Orders = Handler::getInstance();
$Order = $Orders->getOrderInProcess($this->getAttribute('orderId'));
$Payment = $Order->getPayment();
$Order->setData('orderedWithCosts', 1);
$Order->setData('orderedWithCostsPayment', $Payment->getId());
$Order->save();
if (!$Payment->getPaymentType()->isGateway()) {
$Order->createOrder(QUI::getUsers()->getSystemUser());
}
}
}
......@@ -76,7 +76,8 @@ public function createOrderProcess($PermissionUser = null)
'c_user' => $User->getId(),
'c_date' => date('Y-m-d H:i:s'),
'hash' => Uuid::uuid1()->toString(),
'customerId' => $User->getId()
'customerId' => $User->getId(),
'status' => AbstractOrder::STATUS_CREATED
));
$orderId = QUI::getDataBase()->getPDO()->lastInsertId();
......
......@@ -17,6 +17,12 @@
*/
class Handler extends Singleton
{
const ERROR_ORDER_NOT_FOUND = 604; // a specific order wasn't found
const ERROR_NO_ORDERS_FOUND = 605; // Search or last orders don't get results
/**
* Default empty value (placeholder for empty values)
*/
const EMPTY_VALUE = '---';
/**
......@@ -118,10 +124,10 @@ public function getOrderData($orderId)
'limit' => 1
));
if (!isset($result[0])) { // #locale
if (!isset($result[0])) {
throw new Exception(
'Order not found',
404
QUI::getLocale()->get('quiqqer/order', 'exception.order.not.found'),
self::ERROR_ORDER_NOT_FOUND
);
}
......@@ -204,8 +210,8 @@ public function getLastOrderInProcessFromUser(QUI\Interfaces\Users\User $User)
if (!isset($result[0])) {
throw new Exception(
'Order not found',
404
QUI::getLocale()->get('quiqqer/order', 'exception.no.orders.found'),
self::ERROR_NO_ORDERS_FOUND
);
}
......@@ -232,8 +238,8 @@ public function getOrderProcessData($orderId)
if (!isset($result[0])) {
throw new Exception(
'Order not found',
404
QUI::getLocale()->get('quiqqer/order', 'exception.order.not.found'),
self::ERROR_ORDER_NOT_FOUND
);
}
......
......@@ -159,6 +159,15 @@ public function hasInvoice()
return $this->isPosted();
}
/**
* Post the order and create an invoice
*/
public function post()
{
return $this->createInvoice();
}
/**
* Return the order data for saving
*
......
......@@ -123,6 +123,29 @@ public function createOrder($PermissionUser = null)
403
);
}
$SystemUser = QUI::getUsers()->getSystemUser();
$this->save($SystemUser);
$Order = Factory::getInstance()->create($SystemUser);
// bind the new order to the process order
QUI::getDataBase()->update(
Handler::getInstance()->tableOrderProcess(),
array('order_id' => $Order->getId()),
array('id' => $this->getId())
);
// copy the data to the order
$data = $this->getDataForSaving();
$data['order_process_id'] = $this->getId();
QUI::getDataBase()->update(
Handler::getInstance()->table(),
$data,
array('id' => $Order->getId())
);
}
/**
......@@ -170,8 +193,8 @@ protected function getDataForSaving()
}
//payment
$paymentId = '';
$paymentMethod = '';
$paymentId = null;
$paymentMethod = null;
$Payment = $this->getPayment();
......
......@@ -44,7 +44,7 @@ public function __construct($attributes = array())
'orderId' => false
));
$this->addCSSFile(dirname(__FILE__) . '/Controls/OrderProcess.css');
$this->addCSSFile(dirname(__FILE__).'/Controls/OrderProcess.css');
$steps = $this->getSteps();
$step = $this->getAttribute('step');
......@@ -127,6 +127,7 @@ protected function send()
if ($status === AbstractOrderProcessProvider::PROCESSING_STATUS_PROCESSING) {
$this->ProcessingProvider = $Provider;
return;
}
......@@ -155,7 +156,7 @@ public function getBody()
}
}
$template = dirname(__FILE__) . '/Controls/OrderProcess.html';
$template = dirname(__FILE__).'/Controls/OrderProcess.html';
$Engine = QUI::getTemplateManager()->getEngine();
// processing step
......@@ -280,6 +281,18 @@ public function getNextStep($StartStep = null)
$step = $StartStep->getName();
}
// @todo prüfen ob bezahlung schon da ist oder gemacht wurde
// wenn es order id gibt und bezahlung, dann abschluss anzeigen
if ($step === 'finish') {
$Payment = $this->getOrder()->getPayment();
$PaymentType = $Payment->getPaymentType();
// checkout gateway
if ($PaymentType->isGateway()) {
return $this->getStepByName('checkout');
}
}
$steps = $this->getSteps();
$keys = array_keys($steps);
......@@ -425,6 +438,7 @@ public function getSite()
$Site = $Project->get($sites[0]['id']);
$this->setAttribute('Site', $Site);
return $Site;
}
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren