Formulario de confirmar pedido muestra información de saldo, ahora se usa la fuente Roboto, ahora ofrece la opción de reintentar pago cuando hay un error, varios errores solucionados

This commit is contained in:
Juan Ferrer Toribio 2016-01-15 13:31:08 +01:00
parent 4675bd4a3e
commit 6a28912da5
55 changed files with 1039 additions and 392 deletions

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
hedera-web (1.322-deb8) stable; urgency=low
hedera-web (1.323-deb8) stable; urgency=low
* Initial Release.

View File

@ -33,6 +33,10 @@
{
float: right;
}
.address .actions > .htk-button
{
margin: 0;
}
.address .actions > *
{
display: inline-block;

View File

@ -28,6 +28,7 @@
.connections .item > button
{
float: right;
margin: 0;
}
.connections .item > p
{

View File

@ -0,0 +1,102 @@
Vn.Queries = new Class
({
Extends: Vn.Form
,activate: function ()
{
this.$('result-index').value = 0;
}
,clean: function ()
{
if (this._grid)
{
this.$('grid-holder').removeChild (this._grid.getNode ());
this._grid.unref ();
this._grid = null;
}
}
,_onExecuteClick: function ()
{
this.clean ();
var model = new Db.Model ({
conn: this.conn,
query: this.$('sql').value,
resultIndex: this.$('result-index').value,
updatable: this.$('updatable').value
});
model.on ('status-changed', this._onModelChange, this);
}
,_onCleanClick: function ()
{
this.clean ();
}
,_onModelChange: function (model, status)
{
if (status !== Db.Model.Status.LOADING)
{
model.disconnect ('status-changed', this._onModelChange, this);
model.unref ();
}
if (status !== Db.Model.Status.READY)
return;
Htk.Toast.showMessage (_('Query executed!'));
var gridHolder = this.$('grid-holder');
if (gridHolder.firstChild)
gridHolder.removeChilds (gridHolder.firstChild);
var grid = new Htk.Grid ();
var columns = model.columns;
for (var i = 0; i < columns.length; i++)
{
var c = columns[i];
switch (c.type)
{
case Db.Conn.Type.BOOLEAN:
var column = new Htk.ColumnCheck ();
break;
case Db.Conn.Type.INTEGER:
var column = new Htk.ColumnSpin ();
break;
case Db.Conn.Type.DOUBLE:
var column = new Htk.ColumnSpin ({digits: 2});
break;
case Db.Conn.Type.DATE:
var column = new Htk.ColumnDate ({format: '%a, %e %b %Y'});
break;
case Db.Conn.Type.DATE_TIME:
var column = new Htk.ColumnDate ({format: '%a, %e %b %Y, %T'});
break;
case Db.Conn.Type.STRING:
default:
var column = new Htk.ColumnText ();
}
column.setProperties ({
title: c.name,
editable: this.$('updatable').value,
columnIndex: i
});
grid.appendColumn (column);
}
grid.model = model;
gridHolder.appendChild (grid.getNode ());
this._grid = grid;
}
});

View File

@ -0,0 +1,25 @@
.queries
{
padding: 1em;
}
.queries .box
{
max-width: 40em;
margin: 0 auto;
}
.queries .form
{
box-sizing: border-box;
padding: 2em;
}
.queries textarea
{
display: block;
width: 100%;
height: 8em;
}
.queries .result
{
margin-top: 1em;
overflow: auto;
}

40
web/forms/admin/queries/ui.xml Executable file
View File

@ -0,0 +1,40 @@
<vn>
<div id="title">
<h1><t>Queries</t></h1>
</div>
<div id="actions">
<htk-button
image="image/dark/ok.svg"
tip="_Execute"
on-click="_onExecuteClick"
showText="true"/>
<htk-button
image="image/dark/delete.svg"
tip="_Clean"
on-click="_onCleanClick"
showText="true"/>
</div>
<div id="form" class="queries">
<div class="box form">
<div class="form-group">
<label><t>SQL query</t></label>
<textarea
id="sql"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
</div>
<div class="form-group">
<label><t>Result index</t></label>
<htk-spin id="result-index"/>
</div>
<div class="form-group">
<label><t>Updatable</t></label>
<htk-check id="updatable"/>
</div>
</div>
<div class="box result">
<div id="grid-holder"/>
</div>
</div>
</vn>

View File

@ -15,6 +15,7 @@
.users-box > button
{
float: right;
margin: 0;
}
.users-box > p
{

View File

@ -159,68 +159,41 @@
/* Lots popup*/
div.amount
.lots-popup .footer
{
text-align: center;
background-color: #009688;
color: white;
line-height: 2.5em;
padding: 0.2em;
line-height: 2em;
padding: .4em;
}
button.erase
.lots-popup .footer > button
{
margin: 0;
}
.lots-popup .erase
{
float: left;
}
button.confirm
.lots-popup .confirm
{
float: right;
}
button.erase > img,
button.confirm > img
.lots-popup .erase > img,
.lots-popup .confirm > img
{
display: block;
height: 1em;
}
/* Items */
/*
.catalog .list-view
{
margin: 0 auto;
padding: 1em;
max-width: 45em;
min-width: 25em;
}
.items
{
width: 100%;
}
.catalog div.box div.header,
.items > thead > tr,
.realms-bar
{
background-color: #777;
}
.items > tbody > tr
{
height: 4em;
}
.items .icon
{
width: 4em;
padding: 0;
}
.items .icon > img
{
max-height: 2.5em;
max-width: 2.5em;
border-radius: 50%;
}*/
td.second-category
.catalog .second-category
{
font-weight: bold;
color: orange;
}
td.third-category
.catalog .third-category
{
font-weight: bold;
color: red;
@ -235,6 +208,38 @@ td.third-category
padding-bottom: 1em;
text-align: center;
}
.catalog .item-info > h2
{
font-weight: normal;
}
.catalog .item-info > p
{
margin: 0;
padding: 0;
color: #777;
font-size: .8em;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.grid-view .item-info > .producer
{
text-transform: uppercase;
}
.catalog .item-info > .htk-button
{
margin: -0.3em;
padding: .3em;
}
.catalog .item-info > .htk-button > img
{
vertical-align: middle;
}
.catalog .item-info .from
{
font-size: .8em;
font-style: italic;
}
/* List view */
@ -273,35 +278,21 @@ td.third-category
.list-view .item-info
{
position: absolute;
left: 4.6em;
left: 5.5em;
right: 0;
top: 0;
bottom: 0;
margin: .9em;
margin-left: 0;
}
.list-view .item-info > h2
{
font-size: 1em;
font-weight: normal;
padding: 0;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.list-view .item-info > p
{
margin: 0;
padding: 0;
color: #777;
font-size: .8em;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.list-view .item-info > .producer
{
text-transform: uppercase;
}
.list-view .item-info > .color
{
display: none;
@ -312,20 +303,9 @@ td.third-category
bottom: 0;
right: .3em;
}
.list-view .item-info .from
{
font-size: .8em;
font-style: italic;
}
.list-view .item-info > .htk-button
{
float: right;
margin: -0.3em;
padding: .3em;
}
.list-view .item-info > .htk-button > img
{
vertical-align: middle;
}
.list-view .item-info > .info-button
{
@ -377,45 +357,20 @@ td.third-category
}
.grid-view .item-info > h2
{
font-size: 1.2em;
font-weight: normal;
padding-top: 0;
}
.grid-view .item-info > p
{
margin: 0;
padding: 0;
color: #777;
font-size: .8em;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.grid-view .item-info > .producer
{
text-transform: uppercase;
}
.grid-view .item-info > .aval-price
{
position: absolute;
bottom: 0;
right: 2.8em;
}
.grid-view .item-info .from
{
font-size: .8em;
font-style: italic;
}
.grid-view .item-info .add-button
{
position: absolute;
bottom: 0;
right: 0;
padding: .3em;
}
.grid-view .item-info .add-button > img
{
vertical-align: middle;
}
.grid-view .item-info > .info-button
{

View File

@ -120,7 +120,6 @@
<div id="main" class="main">
<htk-repeater
id="grid-view"
class="grid-view"
empty-message="_Choose filter from right menu"
form-id="item"
renderer="gridRenderer"
@ -409,7 +408,7 @@
tip="_Add"
on-clicked="onAddLotClick"/>
</htk-grid>
<div class="amount">
<div class="footer">
<button on-click="onEraseClick" title="_Erase" class="erase">
<img
src="image/dark/delete.svg"

View File

@ -33,14 +33,98 @@ Vn.Confirm = new Class
Vn.Node.hide (this.$('address'));
Vn.Node.setText (this.$('method'), _('Warehouse'));
}
var total = form.get ('tax_base') + form.get ('vat');
if (total === null)
total = 0;
var credit = form.get ('credit');
var debt = form.get ('debt');
var totalDebt = debt + total;
var exceededCredit = totalDebt - credit;
var creditExceededCond = exceededCredit > 0;
if (creditExceededCond)
Htk.Toast.showWarning (
_('You have exceeded your credit.'));
this.$('debt').value = debt;
this.$('total-debt').value = totalDebt;
this.$('total-amount').value = totalDebt;
this.$('credit-excess').value = exceededCredit;
this.$('excess-amount').value = exceededCredit;
this.$('pay-amount').value = 'ALL';
if (credit > 0)
{
this.$('credit-info').style.display = 'table-row';
if (creditExceededCond)
{
this.$('amount-selector').style.display = 'block';
this.$('exceeded-info').style.display = 'table-row';
this.$('pay-amount').value = 'EXCEEDED';
}
}
var methods = [];
if (totalDebt <= 0)
{
methods = ['balance'];
selectedMethod = 'BALANCE';
}
else
{
methods = ['card', 'transfer', 'later'];
if (!creditExceededCond)
{
methods.push ('credit');
selectedMethod = 'CREDIT';
}
else
selectedMethod = 'CARD';
}
for (var i = 0; i < methods.length; i++)
this.$(methods[i] +'-method').style.display = 'block';
this.$('pay-method').value = selectedMethod;
}
,onImportReady: function (form)
,onPayMethodChange: function (payMethod)
{
if (form.row != -1)
this.$('total').value = form.get ('tax_base') + form.get ('vat');
else
this.$('total').value = null;
var id = this.displayedInfo;
if (id)
Vn.Node.removeClass (this.$(id), 'selected');
switch (payMethod.value)
{
case 'BALANCE':
id = 'balance-method';
break;
case 'CREDIT':
id = 'credit-method';
break;
case 'CARD':
id = 'card-method';
break;
case 'TRANSFER':
id = 'transfer-method';
break;
default:
id = null;
}
this.displayedInfo = id;
if (id)
Vn.Node.addClass (this.$(id), 'selected');
}
,disableButtons: function (disable)
@ -64,15 +148,9 @@ Vn.Confirm = new Class
{
this.disableButtons (false);
var res = resultSet.fetchResult ();
if (res)
if (resultSet.fetchResult ())
{
Vn.Cookie.unset ('order');
var debt = resultSet.fetchValue ();
this._pay = debt > this.$('order-form').get ('credit');
this.$('success-dialog').show ();
}
}
@ -84,9 +162,16 @@ Vn.Confirm = new Class
,onPopupClose: function ()
{
if (this._pay)
Vn.Tpv.pay (this.conn, this.$('total').value,
this.$('order-form').get ('company_id'));
if (this.$('pay-method').value === 'CARD')
{
if (this.$('pay-amount').value === 'EXCEEDED')
var payAmount = this.$('excess-amount').value;
else
var payAmount = this.$('total-amount').value;
var tpv = new Vn.Tpv ({conn: this.conn});
tpv.pay (payAmount, this.$('order-form').get ('company_id'));
}
else
this.hash.set ({'form': 'ecomerce/orders'});
}

View File

@ -1,70 +1,125 @@
.confirm
{
padding: 1em;
max-width: 40em;
max-width: 30em;
margin: 0 auto;
color: #555;
}
.confirm .box
{
padding: 2.2em 2.5em;
}
.confirm .summary
{
margin-bottom: 1em;
}
.confirm .address
{
margin-top: .8em;
}
.confirm h2
{
font-size: 1.1em;
font-weight: normal;
padding: 0;
font-size: 1.6em;
color: black;
margin: 0 3em;
margin: 0;
margin-bottom: .5em;
color: #333;
}
.confirm .form
{
margin: 0 auto;
padding: 2.5em 3em;
color: #555;
}
.confirm .form p.important,
.confirm .form button
.confirm button
{
font-size: 1.4em;
}
.confirm .form > div.section
{
margin-bottom: 1.5em;
}
.confirm .form p
.confirm p
{
margin: .2em 0;
}
.button-bar
{
margin-top: 2em;
}
.modify-order
.confirm .modify-order
{
float: left;
}
.confirm-order
.confirm .confirm-order
{
float: right;
}
/* Success dialog */
.success-dialog
.confirm .payment > div
{
padding: 1em;
max-width: 35em;
font-weight: normal;
color: #555;
margin-bottom: 1.4em;
}
.success-dialog img
.confirm .payment > .button-bar
{
float: left;
height: 3em;
margin-top: 0;
margin-right: 1em;
margin: 0;
margin-top: 1.8em;
}
.success-dialog p
/* Table */
.confirm .debt-info
{
padding: 0;
}
.success-dialog > button
.confirm .debt-info > table
{
margin-top: 0.5em;
border-collapse: collapse;
}
.confirm td
{
padding: .15em 0;
}
.confirm .sum-total > td
{
border-top: solid 1px #DDD;
font-weight: bold;
}
.confirm .currency
{
text-align: right;
}
.confirm .credit-info
{
display: none;
}
.confirm .exceeded-info
{
display: none;
color: #E53935;
}
/* Pay */
.confirm .amount-selector,
.confirm .pay-methods > div,
.confirm .pay-info
{
display: none;
}
.confirm .pay-methods > div.selected > .pay-info
{
display: block;
}
.confirm .radio > div
{
margin: .3em 0;
}
.confirm .radio > div > *
{
vertical-align: middle;
}
.confirm .radio > div > input[type=radio]
{
margin: 0;
margin-right: .5em;
}
.confirm .pay-info
{
padding: .5em 1.3em;
}
.confirm .transfer-account
{
margin-top: .5em;
}
.confirm .transfer-account > p
{
margin: .1em 0;
}

View File

@ -1,56 +1,52 @@
<vn>
<vn-group>
<db-form id="order-form" on-ready="onOrderReady">
<db-model property="model">
<custom>
SELECT o.id, o.date_send, o.note, o.company_id,
ag.description agency, v.code method, c.credit,
ad.consignee, ad.zip_code, ad.city, ad.name address
FROM basket o
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
LEFT JOIN address_view ad ON ad.id = o.address_id
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
JOIN customer_view c
</custom>
</db-model>
</db-form>
<db-form id="total-form" on-ready="onImportReady">
<db-model property="model" result-index="1">
<custom>
CALL basket_get_vat ();
SELECT
IFNULL(SUM(tax_base), 0) tax_base,
IFNULL(SUM(vat + surcharge), 0) vat
FROM t_order_vat;
DROP TEMPORARY TABLE t_order_vat;
SELECT o.id, o.date_send, o.note, o.company_id,
ag.description agency, v.code method,
ad.consignee, ad.zip_code, ad.city, ad.name address,
t.*, c.credit, customer_get_debt() debt
FROM basket o
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
LEFT JOIN address_view ad ON ad.id = o.address_id
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
JOIN customer_view c
JOIN (
SELECT
IFNULL(SUM(tax_base), 0) tax_base,
IFNULL(SUM(vat + surcharge), 0) vat
FROM t_order_vat
) t;
DROP TEMPORARY TABLE t_order_vat;
</custom>
</db-model>
</db-form>
<db-query id="confirm-query" on-ready="onConfirm">
<custom>
CALL basket_confirm ();
SELECT customer_get_debt();
CALL basket_confirm ()
</custom>
</db-query>
</vn-group>
<div id="title">
<h1><t>OrderSummary</t></h1>
<h1><t>Order summary</t></h1>
</div>
<div id="form" class="confirm">
<div class="box">
<div class="form">
<div class="section">
<p class="important">
<t>Arrival</t>
<htk-text format="_%A, %e of %B" form="order-form" column="date_send"/>
<div class="box summary">
<div>
<div class="delivery">
<p>
<t>Delivery at</t>
<htk-text format="%D" form="order-form" column="date_send"/>
</p>
<p>
<span id="method"><t>Agency</t></span>
<htk-text form="order-form" column="agency"/>
</p>
</div>
<div id="address" class="section">
<p class="important">
<div id="address" class="address">
<p>
<htk-text form="order-form" column="consignee"/>
</p>
<p>
@ -61,36 +57,169 @@
<htk-text form="order-form" column="city"/>
</p>
</div>
<div class="section">
<p class="important">
<t>Total</t>
<htk-text id="total" format="%.2d€"/>
</p>
<p>
(<t>TaxBase</t> <htk-text form="total-form" column="tax_base" format="%.2d€"/> +
<t>VAT</t> <htk-text form="total-form" column="vat" format="%.2d€"/>)
</p>
</div>
</div>
<div class="box payment">
<div>
<table class="debt-info">
<tbody>
<tr>
<td>
<t>Previous balance</t>
</td>
<td class="currency">
<htk-text format="%.2d€" id="debt"/>
</td>
</tr>
<tr>
<td>
<t>Order total</t>
</td>
<td class="currency">
<htk-text format="%.2d€" form="order-form" column="tax_base"/>
</td>
</tr>
<tr>
<td>
<t>Order VAT</t>
</td>
<td class="currency">
<htk-text format="%.2d€" form="order-form" column="vat"/>
</td>
</tr>
<tr class="total-debt sum-total">
<td>
<t>Total debt</t>
</td>
<td class="currency">
<htk-text format="%.2d€" id="total-debt"/>
</td>
</tr>
<tr id="credit-info" class="credit-info">
<td>
<t>Credit</t>
</td>
<td class="currency">
<htk-text format="%.2d€" form="order-form" column="credit"/>
</td>
</tr>
<tr id="exceeded-info" class="exceeded-info sum-total">
<td>
<t>Exceeded credit</t>
</td>
<td class="currency">
<htk-text format="%.2d€" id="credit-excess"/>
</td>
</tr>
</tbody>
</table>
</div>
<div id="amount-selector" class="amount-selector">
<h2>
<t>Amount to pay</t>
</h2>
<div class="radio">
<htk-radio-group
id="pay-amount"/>
<div>
<htk-radio radio-group="pay-amount" value="ALL"/>
<label>
<t>Total debt</t>,
<htk-text format="%.2d€" id="total-amount"/>
</label>
</div>
<div>
<htk-radio radio-group="pay-amount" value="EXCEEDED"/>
<label>
<t>Exceeded credit</t>,
<htk-text format="%.2d€" id="excess-amount"/>
</label>
</div>
</div>
<div class="button-bar">
<button on-click="onModifyClick" id="modify" class="thin modify-order">
<t>Modify</t>
</button>
<button on-click="onConfirmClick" id="confirm" class="thin confirm-order">
<t>Confirm</t>
</button>
<div class="clear"/>
</div>
<div>
<h2>
<t>Pay method</t>
</h2>
<div class="pay-methods radio">
<htk-radio-group
id="pay-method"
on-changed="onPayMethodChange"/>
<div id="balance-method">
<htk-radio radio-group="pay-method" value="BALANCE"/>
<label><t>Use my balance</t></label>
<div class="pay-info">
<t>You have a favorable balance.</t>
</div>
</div>
<div id="credit-method">
<htk-radio radio-group="pay-method" value="CREDIT"/>
<label><t>Use my credit</t></label>
<div class="pay-info">
<t>You have a favorable credit.</t>
</div>
</div>
<div id="card-method">
<htk-radio radio-group="pay-method" value="CARD"/>
<label><t>Credit card</t></label>
<div class="pay-info">
<t>You will be redirected to the payment.</t>
</div>
</div>
<div id="transfer-method">
<htk-radio radio-group="pay-method" value="TRANSFER"/>
<label><t>Bank Transfer</t></label>
<div class="pay-info">
<t>Make a transfer to one account.</t>
<htk-repeater form-id="iter">
<db-model property="model">
<custom>
SELECT description, iban, entity_id, office, dc, number
FROM vn2008.account_customer c
</custom>
</db-model>
<custom>
<div class="transfer-account">
<p>
<htk-text form="iter" column="description"/>
</p>
<p>
<htk-text form="iter" column="iban"/>
<htk-text form="iter" column="entity_id"/>
<htk-text form="iter" column="office"/>
<htk-text form="iter" column="DC"/>
<htk-text form="iter" column="number"/>
</p>
</div>
</custom>
</htk-repeater>
</div>
</div>
<div id="later-method">
<htk-radio radio-group="pay-method" value="LATER"/>
<label><t>Pay later</t></label>
</div>
</div>
</div>
<div class="button-bar">
<button on-click="onModifyClick" id="modify" class="thin modify-order">
<t>Modify</t>
</button>
<button on-click="onConfirmClick" id="confirm" class="thin confirm-order">
<t>Confirm</t>
</button>
<div class="clear"/>
</div>
</div>
</div>
<htk-popup id="success-dialog" modal="true" on-closed="onPopupClose">
<div property="child-node" class="success-dialog">
<div property="child-node" class="dialog">
<div>
<img src="image/ok.svg" alt="_Ok"/>
<p><t>OrderPlacedSuccessfully</t></p>
<p><t>Order confirmed successfully</t></p>
<div class="clear"/>
</div>
<button on-click="onAcceptClick" class="thin confirm-order">
<button class="thin" on-click="onAcceptClick">
<t>Accept</t>
</button>
<div class="clear"/>

View File

@ -5,7 +5,14 @@ Vn.Orders = new Class
,activate: function ()
{
Vn.Tpv.check (this.conn);
this.tpv = new Vn.Tpv ({conn: this.conn});
this.tpv.check (this._onTpvCheck.bind (this));
}
,_onTpvCheck: function (tpv, tpvOrder, tpvStatus)
{
if (tpvStatus === 'ko')
this.$('error-dialog').show ();
}
,onBasketClick: function ()
@ -44,7 +51,18 @@ Vn.Orders = new Class
var amount = parseFloat (prompt (_('AmountToPay:'), defaultAmountStr));
Vn.Tpv.pay (this.conn, amount, null);
this.tpv.pay (amount, null);
}
,onCancelPay: function ()
{
this.$('error-dialog').hide ();
}
,onRetryPay: function ()
{
this.$('error-dialog').hide ();
this.tpv.retryPay ();
}
});

View File

@ -57,7 +57,7 @@
<htk-text form="iter" column="total" format="%.2d€"/>
</p>
<p class="important">
<htk-text form="iter" column="date" format="%A, %e of %B"/>
<htk-text form="iter" column="date" format="%D"/>
</p>
<p>
<htk-text form="iter" column="consignee"/>
@ -71,4 +71,20 @@
</htk-repeater>
</div>
</div>
<htk-popup id="error-dialog" modal="true">
<div property="child-node" class="dialog">
<div>
<img src="image/error.svg" alt="_Error"/>
<p><t>An error has been in the payment</t></p>
<div class="clear"/>
</div>
<button class="thin" on-click="onRetryPay">
<t>Retry</t>
</button>
<button class="thin" on-click="onCancelPay">
<t>Accept</t>
</button>
<div class="clear"/>
</div>
</htk-popup>
</vn>

View File

@ -44,4 +44,5 @@
.news .item > button
{
float: right;
margin: 0;
}

View File

@ -9,10 +9,10 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="ok-dark.svg"
height="13.21348"
sodipodi:docname="ok.svg"
height="16"
id="svg7384"
inkscape:version="0.48.5 r10040"
inkscape:version="0.91 r13725"
version="1.1"
width="16">
<metadata
@ -32,8 +32,8 @@
bordercolor="#666666"
borderopacity="1"
inkscape:current-layer="layer15"
inkscape:cx="8.032386"
inkscape:cy="6.60674"
inkscape:cx="8"
inkscape:cy="8"
gridtolerance="10"
inkscape:guide-bbox="true"
guidetolerance="10"
@ -54,12 +54,12 @@
inkscape:snap-nodes="false"
inkscape:snap-others="false"
inkscape:snap-to-guides="true"
inkscape:window-height="1014"
inkscape:window-height="1016"
inkscape:window-maximized="1"
inkscape:window-width="1920"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:zoom="61.755117"
inkscape:zoom="51.6875"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
@ -85,55 +85,55 @@
id="layer9"
inkscape:label="status"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer10"
inkscape:label="devices"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer11"
inkscape:label="apps"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer13"
inkscape:label="places"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer14"
inkscape:label="mimetypes"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer15"
inkscape:label="emblems"
style="display:inline"
transform="translate(-463.9375,-400.91152)">
transform="translate(-463.9375,-398.125)">
<path
inkscape:connector-curvature="0"
d="m 475.64536,402.5632 -5.32585,5.32584 -2.08987,-2.08989 -2.29214,2.29215 3.23595,3.23594 1.14606,1.14607 1.14607,-1.14607 6.47192,-6.47192 -2.29214,-2.29212 z"
d="m 475.64536,401.16994 -5.32585,5.32584 -2.08987,-2.08989 -2.29214,2.29215 3.23595,3.23594 1.14606,1.14608 1.14607,-1.14608 6.47192,-6.47192 -2.29214,-2.29212 z"
id="path5037"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
</g>
<g
inkscape:groupmode="layer"
id="g71291"
inkscape:label="emotes"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="g4953"
inkscape:label="categories"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer12"
inkscape:label="actions"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -10,9 +10,9 @@
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="ok.svg"
height="13.21348"
height="16"
id="svg7384"
inkscape:version="0.48.5 r10040"
inkscape:version="0.91 r13725"
version="1.1"
width="16">
<metadata
@ -33,7 +33,7 @@
borderopacity="1"
inkscape:current-layer="layer15"
inkscape:cx="8"
inkscape:cy="6.60674"
inkscape:cy="8"
gridtolerance="10"
inkscape:guide-bbox="true"
guidetolerance="10"
@ -54,12 +54,12 @@
inkscape:snap-nodes="false"
inkscape:snap-others="false"
inkscape:snap-to-guides="true"
inkscape:window-height="1014"
inkscape:window-height="1016"
inkscape:window-maximized="1"
inkscape:window-width="1920"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:zoom="61.755117"
inkscape:zoom="51.6875"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
@ -85,55 +85,55 @@
id="layer9"
inkscape:label="status"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer10"
inkscape:label="devices"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer11"
inkscape:label="apps"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer13"
inkscape:label="places"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer14"
inkscape:label="mimetypes"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer15"
inkscape:label="emblems"
style="display:inline"
transform="translate(-463.9375,-400.91152)">
transform="translate(-463.9375,-398.125)">
<path
inkscape:connector-curvature="0"
d="m 475.64536,402.5632 -5.32585,5.32584 -2.08987,-2.08989 -2.29214,2.29215 3.23595,3.23594 1.14606,1.14607 1.14607,-1.14607 6.47192,-6.47192 -2.29214,-2.29212 z"
d="m 475.64536,401.16994 -5.32585,5.32584 -2.08987,-2.08989 -2.29214,2.29215 3.23595,3.23594 1.14606,1.14608 1.14607,-1.14608 6.47192,-6.47192 -2.29214,-2.29212 z"
id="path5037"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#78d478;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#78d478;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
</g>
<g
inkscape:groupmode="layer"
id="g71291"
inkscape:label="emotes"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="g4953"
inkscape:label="categories"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
<g
inkscape:groupmode="layer"
id="layer12"
inkscape:label="actions"
style="display:inline"
transform="translate(-463.9375,-400.91152)" />
transform="translate(-463.9375,-398.125)" />
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -16,9 +16,9 @@ Db.Conn = new Class ().extend
,Type:
{
BOOLEAN : 1
,INTEGER : 2
,DOUBLE : 3
,STRING : 4
,INTEGER : 3
,DOUBLE : 4
,STRING : 5
,DATE : 8
,DATE_TIME : 9
}

View File

@ -62,7 +62,7 @@
{
font-weight: normal;
font-size: 1.4em;
padding: .7em .6em;
padding: .8em .6em;
padding-right: .3em;
margin: 0;
}
@ -164,21 +164,22 @@
}
.vn-gui .user-info
{
position: relative;
width: 100%;
overflow: hidden;
}
.vn-gui .user-info > span
.vn-gui .user-info > p
{
max-width: 8em;
display: inline-block;
margin: .1em 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
vertical-align: middle;
}
.vn-gui button.logout
{
float: right;
margin: 0;
padding: .2em;
display: block;
}
.vn-gui button.logout > img
{

View File

@ -16,13 +16,13 @@
<button class="logout" on-click="onLogoutClick" title="_Exit">
<img src="image/dark/exit.svg" alt="_Exit"/>
</button>
<span id="user-name"/>
<p id="user-name"/>
</div>
<div id="supplant" class="supplant user-info">
<button class="logout" on-click="onSupplantExitClick" title="_Exit">
<img src="image/dark/exit.svg" alt="_Exit"/>
</button>
<span id="supplanted"/>
<p id="supplanted"/>
</div>
</div>
<a id="test-link" class="test-link" href="#"></a>
@ -32,9 +32,6 @@
<a target="_blank" href="https://blog.verdnatura.es/">
<img alt="Blogger" src="image/blog.svg" title="Blog"/>
</a>
<a target="_blank" href="http://verdnaturacomunicacion.blogspot.com.es/">
<img alt="Blogger" src="image/blogger.svg" title="Blogger"/>
</a>
<a target="_blank" href="https://plus.google.com/u/0/107516577801959283883/posts">
<img alt="Google+" src="image/google-plus.svg" title="Google+"/>
</a>

View File

@ -43,9 +43,6 @@
<a target="_blank" href="https://blog.verdnatura.es/">
<img alt="Blogger" src="image/blog.svg" title="Blog"/>
</a>
<a target="_blank" href="http://verdnaturacomunicacion.blogspot.com.es/">
<img alt="Blogger" src="image/blogger.svg" title="Blogger"/>
</a>
<a target="_blank" href="https://plus.google.com/u/0/107516577801959283883/posts">
<img alt="Google+" src="image/google-plus.svg" title="Google+"/>
</a>

Binary file not shown.

View File

@ -1,8 +1,8 @@
@font-face
{
font-family: 'Open Sans';
src: url('opensans.ttf') format('truetype');
font-family: 'Roboto';
src: url('roboto.ttf') format('truetype');
}
@media print
{
@ -67,7 +67,7 @@
}
*
{
font-family: 'Open Sans';
font-family: 'Roboto';
}
body
{

BIN
web/js/hedera/roboto.ttf Normal file

Binary file not shown.

View File

@ -66,7 +66,7 @@
body
{
color: #333;
font-family: 'Open Sans', 'Verdana', 'Sans';
font-family: 'Roboto', 'Verdana', 'Sans';
margin: 0;
}
label,
@ -247,6 +247,7 @@ input[type=reset]
padding: 0.5em;
cursor: pointer;
border-radius: 0.1em;
margin: -0.5em;
}
button:hover,
input[type=submit]:hover,
@ -435,3 +436,35 @@ img.icon
.masonry-box { width: 25%; }
}
/* Dialog */
.dialog
{
padding: 1.5em;
max-width: 35em;
font-weight: normal;
color: #555;
}
.dialog p
{
margin: 0;
}
.dialog img
{
float: left;
height: 3em;
margin-top: 0;
margin-right: 1em;
}
.dialog p
{
padding: 0;
}
.dialog > button
{
float: right;
margin-left: 1em;
margin-top: .5em;
}

View File

@ -1,23 +1,36 @@
Vn.Tpv =
{
check: function (conn)
Vn.Tpv = new Class
({
Extends: Vn.Object
,tpvOrder: null
,tpvStatus: null
,check: function (callback)
{
var tpvStatus = Vn.Hash.get ('tpv_status');
this.tpvOrder = Vn.Hash.get ('tpv_order');
this.tpvStatus = Vn.Hash.get ('tpv_status');
if (tpvStatus)
if (this.tpvStatus)
{
var batch = new Sql.Batch ();
batch.addValue ('transaction', Vn.Hash.get ('tpv_order'));
batch.addValue ('status', tpvStatus);
batch.addValue ('transaction', this.tpvOrder);
batch.addValue ('status', this.tpvStatus);
var query = 'CALL transaction_end (#transaction, #status)';
conn.execQuery (query, null, batch);
this.conn.execQuery (query, null, batch);
}
if (callback)
callback (this, this.tpvOrder, this.tpvStatus);
}
,pay: function (conn, amount, company)
,pay: function (amount, company)
{
this._realPpay (amount * 100, company);
}
,_realPpay: function (amount, company)
{
if (amount > 0)
{
@ -25,7 +38,7 @@ Vn.Tpv =
request.add
({
'action': 'tpv'
,'amount': parseInt (amount * 100)
,'amount': parseInt (amount)
,'urlOk': this._makeUrl ('ok')
,'urlKo': this._makeUrl ('ko')
,'company': company
@ -37,6 +50,29 @@ Vn.Tpv =
else if (!isNaN (amount))
Htk.Toast.showError (_('AmountError'));
}
,retryPay: function ()
{
var batch = new Sql.Batch ();
batch.addValue ('transaction', parseInt (this.tpvOrder));
var query = 'SELECT t.amount, m.company_id '
+'FROM tpv_transaction_view t '
+'JOIN tpv_merchant m ON t.merchant_id = m.id '
+'WHERE t.id = #transaction';
this.conn.execQuery (query,
this._onRetryPayDone.bind (this), batch);
}
,_onRetryPayDone: function (resultSet)
{
var res = resultSet.fetchResult ();
if (res.next ())
this._realPpay (res.get ('amount'), res.get ('company_id'));
else
Htk.Toast.showError (_('AmountError'));
}
,_onTransactionStart: function (request, success)
{
@ -104,7 +140,7 @@ Vn.Tpv =
return path;
}
};
});
Vn.BasketChecker =
{

View File

@ -7,12 +7,12 @@ Htk.Entry = new Class
{
this.createElement ('input');
this.node.type = 'text';
this.node.addEventListener ('change', this.onChange.bind (this));
this.node.addEventListener ('change', this._onChange.bind (this));
this.parent (props);
}
,onChange: function (event)
,_onChange: function (event)
{
var newValue;

View File

@ -1,40 +1,25 @@
Htk.Spin = new Class
({
Extends: Htk.Entry
Extends: Htk.Field
,Tag: 'htk-spin'
,initialize: function (props)
{
var input = this.createElement ('input');
//setInputTypeNumber (input);
this.node.type = 'number';
input.addEventListener ('change', this._onChange.bind (this));
this.unit = null;
this.digits = 0;
this.parent (props);
}
,changed: function ()
,_onChange: function ()
{
var newValue = (this.node.value == '') ? null : parseFloat (this.node.value);
this.node.value = newValue;
this.realValue = value;
this.signalEmit ('changed');
}
,setEditable: function (editable)
{
if (editable)
{
var input = document.createElement ('input');
input.style.textAlign = 'right';
input.style.width = '100%';
setInputTypeNumber (input);
input.addEventListener ('change', this.changed.bind (this));
this.node.appendChild (input);
this.entry = input;
}
else
{
removeChilds (this.node);
this.entry = null;
}
this.valueChanged (newValue);
}
,putValue: function (value)
@ -51,9 +36,11 @@ Htk.Spin = new Class
else
text = '';
if (!this.editable)
setText (this.node, text);
else
this.entry.value = text;
this.node.value = text;
}
,setEditable: function (editable)
{
this.node.readOnly = !editable;
}
});

View File

@ -339,15 +339,18 @@ td.cell-image img
}
.htk-toast > .message
{
background-color: #BFB;
background-color: #B3E5FC;
color: #037;
}
.htk-toast > .warning
{
background-color: #FFB;
background-color: #FFE0B2;
color: #C30;
}
.htk-toast > .error
{
background-color: #FBB;
background-color: #FFCDD2;
color: #A00;
}
/* Popup */

View File

@ -60,6 +60,8 @@ Vn.Date =
,_('Dec')
]
,tokenD: _('%A, %B %e')
,regexp: new RegExp ('%[a-zA-Z]', 'g')
,pad: function (number)
@ -106,6 +108,9 @@ Vn.Date =
// Year with 4 digits
case 'Y': return d.getFullYear ();
// Complete date without year
case 'D': return this.tokenD.replace (this.regexp, this.regexpFunc.bind (this, d));
}
return token;

View File

@ -0,0 +1,11 @@
{
"Queries": "Consultes"
,"Execute": "Executar"
,"Clean": "Netejar"
,"SQL query": "Consulta SQL"
,"Updatable": "Actualitzable"
,"Query executed!": "Consulta executada!"
}

View File

@ -1,25 +1,37 @@
{
"Checkout": "Finalitzar comanda"
,"OrderSummary": "Resum de la comanda"
,"Arrival": "Arribada"
,"%A, %e of %B": "%A, %e de %B"
,"Order summary": "Resum de la comanda"
,"Delivery at": "Lliurament el"
,"Agency": "Agència"
,"Warehouse": "Magatzem"
,"Previous balance": "Saldo anterior"
,"Order total": "Total comanda"
,"Order VAT": "IVA comanda"
,"Total debt": "Total deute"
,"Credit": "Crèdit"
,"Exceeded credit": "Crèdit excedit"
,"Amount to pay": "Quantitat a pagar"
,"Pay method": "Mètode de pagament"
,"DeliveryAddress": "Adreça d'enviament"
,"Use my balance": "Utilitzar el meu saldo"
,"You have a favorable balance.": "No necessites pagar res, tens un saldo faborable."
,"Use my credit": "Utilitzar el meu crèdit"
,"You have a favorable credit.": "No necessites pagar res, tens crèdit faborable."
,"Credit card": "Targeta de crèdit"
,"You will be redirected to the payment.": "En confirmar la comanda seràs redirigit a la plataforma de pagament."
,"Bank Transfer": "Transferència bancària"
,"Make a transfer to one account.": "Fer una transferecia a una de les següents comptes i envia el justificant al teu comercial."
,"Pay later": "Pagar més tard"
,"Import": "Import"
,"TaxBase": "Base imposable"
,"VAT": "IVA"
,"Total": "Total"
,"Cancel": "Cancel"
,"Modify": "Modificar"
,"Confirm": "Confirmar"
,"OrderPlacedSuccessfully": "La teva comanda ha estat realitzat amb èxit"
,"OrderReserved": "Hem reservat la teva comanda però sembla que hi ha hagut problemes amb el pagament. Contacta amb el teu comercial."
,"Order confirmed successfully": "La teva comanda ha estat realitzat amb èxit"
,"Accept": "D'acord"
,"PayNow": "Pagar ara"
,"You have exceeded your credit.": "Has excedit el teu crèdit, si us plau realitza el pagament perquè puguem preparar la teva comanda."
}

View File

@ -33,5 +33,7 @@
,"AmountError": "La quantitat ha de ser un nombre positiu i inferior o igual a l'import pendent"
,"PayError": "Error al realitzar el pagament"
,"%A, %e of %B": "%A, %e de %B"
,"An error has been in the payment": "Sembla que hi ha hagut un error en el pagament"
,"Retry": "Reintenta"
,"Accept": "Acceptar"
}

View File

@ -41,4 +41,6 @@ Vn.Locale.add
,"Oct": "Oct"
,"Nov": "Nov"
,"Dec": "Des"
,"%A, %B %e": "%A, %e de %B"
});

View File

@ -0,0 +1,11 @@
{
"Queries": "Queries"
,"Execute": "Execute"
,"Clean": "Clean"
,"SQL query": "SQL query"
,"Updatable": "Updatable"
,"Query executed!": "Query executed!"
}

View File

@ -1,25 +1,36 @@
{
"Checkout": "Checkout"
,"OrderSummary": "Order summary"
,"Arrival": "Arrival"
,"%A, %e of %B": "%A, %e of %B"
,"Order summary": "Order summary"
,"Delivery at": "Delivery at"
,"Agency": "Agency"
,"Warehouse": "Store"
,"DeliveryAddress": "Delivery address"
,"Import": "Import"
,"TaxBase": "Tax base"
,"VAT": "VAT"
,"Total": "Total"
,"Previous balance": "Previous balance"
,"Order total": "Order total"
,"Order VAT": "Order VAT"
,"Total debt": "Total debt"
,"Credit": "Credit"
,"Exceeded credit": "Exceeded credit"
,"Cancel": "Cancel"
,"Amount to pay": "Amount to pay"
,"Pay method": "Pay method"
,"Use my balance": "Use my balance"
,"You have a favorable balance.": "You do not need to perform any payment, you have a favorable balance."
,"Use my credit": "Use my credit"
,"You have a favorable credit.": "You do not need to pay now, you have a favorable credit."
,"Credit card": "Credit card"
,"You will be redirected to the payment.": "By confirming the order you will be redirected to the payment platform."
,"Bank Transfer": "Bank Transfer"
,"Make a transfer to one account.": "Make a transfer to one of the following accounts and send the receipt to your salesperson."
,"Pay later": "Pay later"
,"Modify": "Modify"
,"Confirm": "Confirm"
,"OrderPlacedSuccessfully": "Your order has been confirmed successfully"
,"OrderReserved": "We've booked your order but it seems that there have been problems with payment. Contact your sales."
,"Order confirmed successfully": "Your order has been confirmed successfully"
,"Accept": "Accept"
,"PayNow": "Pay now"
,"You have exceeded your credit.": "You have exceeded your credit, in order to prepare your order please pay your debt."
}

View File

@ -33,5 +33,7 @@
,"AmountError": "The amount must be a positive number less than or equal to the outstanding amount"
,"PayError": "Failed to make the payment"
,"%A, %e of %B": "%A, %e of %B"
,"An error has been in the payment": "It seems that there has been an error in the payment"
,"Retry": "Retry"
,"Accept": "Accept"
}

View File

@ -41,4 +41,6 @@ Vn.Locale.add
,"Oct": "Oct"
,"Nov": "Nov"
,"Dec": "Dic"
,"%A, %B %e": "%A, %B %e"
});

View File

@ -0,0 +1,11 @@
{
"Queries": "Consultas"
,"Execute": "Ejecutar"
,"Clean": "Limpiar"
,"SQL query": "Consulta SQL"
,"Updatable": "Actualizable"
,"Query executed!": "¡Consulta ejecutada!"
}

View File

@ -1,25 +1,36 @@
{
"Checkout": "Finalizar pedido"
,"OrderSummary": "Resumen del pedido"
,"Arrival": "Llegada"
,"%A, %e of %B": "%A, %e de %B"
,"Order summary": "Resumen del pedido"
,"Delivery at": "Entrega el"
,"Agency": "Agencia"
,"Warehouse": "Almacén"
,"DeliveryAddress": "Dirección de envío"
,"Import": "Importe"
,"TaxBase": "Base imponible"
,"VAT": "IVA"
,"Total": "Total"
,"Previous balance": "Saldo anterior"
,"Order total": "Total pedido"
,"Order VAT": "IVA pedido"
,"Total debt": "Total deuda"
,"Credit": "Crédito"
,"Exceeded credit": "Crédito excedido"
,"Cancel": "Cancelar"
,"Amount to pay": "Cantidad a pagar"
,"Pay method": "Método de pago"
,"Use my balance": "Usar mi saldo"
,"You have a favorable balance.": "No necesitas pagar nada, tienes un saldo faborable."
,"Use my credit": "Usar mi crédito"
,"You have a favorable credit.": "No necesitas pagar nada, tienes crédito faborable."
,"Credit card": "Tarjeta de crédito"
,"You will be redirected to the payment.": "Al confirmar el pedido serás redirigido a la plataforma de pago."
,"Bank Transfer": "Transferencia bancaria"
,"Make a transfer to one account.": "Haz una transferecia a una de las siguientes cuentas y envía el justificante a tu comercial."
,"Pay later": "Pagar más tarde"
,"Modify": "Modificar"
,"Confirm": "Confirmar"
,"OrderPlacedSuccessfully": "Tu pedido ha sido realizado con éxito"
,"OrderReserved": "Hemos reservado tu pedido pero parece que ha habido problemas con el pago. Contacta con tu comercial."
,"Order confirmed successfully": "Tu pedido ha sido realizado con éxito"
,"Accept": "Aceptar"
,"PayNow": "Pagar ahora"
,"You have exceeded your credit.": "Has excedido tu crédito, por favor realiza el pago para que podamos preparar tu pedido."
}

View File

@ -33,5 +33,7 @@
,"AmountError": "La cantidad debe ser un número positivo e inferior o igual al importe pendiente"
,"PayError": "Error al realizar el pago"
,"%A, %e of %B": "%A, %e de %B"
,"An error has been in the payment": "Parece que ha habido un error en el pago"
,"Retry": "Reintentar"
,"Accept": "Aceptar"
}

View File

@ -41,4 +41,6 @@ Vn.Locale.add
,"Oct": "Oct"
,"Nov": "Nov"
,"Dec": "Dic"
,"%A, %B %e": "%A, %e de %B"
});

View File

@ -0,0 +1,11 @@
{
"Queries": "Queries"
,"Execute": "Execute"
,"Clean": "Clean"
,"SQL query": "SQL query"
,"Updatable": "Updatable"
,"Query executed!": "Query executed!"
}

View File

@ -1,25 +1,36 @@
{
{
"Checkout": "Finir la commande"
,"OrderSummary": "Résumé de la commande"
,"Arrival": "Arrivée"
,"%A, %e of %B": "%A %e %B"
,"Order summary": "Résumé de la commande"
,"Delivery at": "Livraison à"
,"Agency": "Agence"
,"Warehouse": "Entrepôt"
,"DeliveryAddress": "Adresse de livraison"
,"Import": "Montant"
,"TaxBase": "Imposable"
,"VAT": "TVA"
,"Total": "Total"
,"Previous balance": "Solde précédent"
,"Order total": "Total de la commande"
,"Order VAT": "TVA de la commande"
,"Total debt": "Total de la dette"
,"Credit": "Crédit"
,"Exceeded credit": "Crédit dépassée"
,"Cancel": "Annuler"
,"Amount to pay": "Montant à payer"
,"Pay method": "Mode de paiement"
,"Use my balance": "Utiliser mon équilibre"
,"You have a favorable balance.": "Pas besoin de payer quoi que ce soit, vous avez un solde faborable."
,"Use my credit": "Utiliser mon crédit"
,"You have a favorable credit.": "Pas besoin de payer quoi que ce soit, vous faborable crédit."
,"Credit card": "Carte de crédit"
,"You will be redirected to the payment.": "En confirmant la commande, vous serez redirigé vers la plateforme de paiement."
,"Bank Transfer": "Virement bancaire"
,"Make a transfer to one account.": "Faire Transféré à l'un des comptes suivants et envoyer le coupon à votre entreprise."
,"Pay later": "Payer plus tard"
,"Modify": "Modifier"
,"Confirm": "Confirmer"
,"OrderPlacedSuccessfully": "Votre commande a été complété avec succès"
,"OrderReserved": "Nous avons réservé votre commande, mais il semble qu'il y a eu des problèmes avec le paiement Contactez vos commercial."
,"Order confirmed successfully": "Votre commande a été complété avec succès"
,"Accept": "OK"
,"PayNow": "Payer maintenant"
,"You have exceeded your credit.": "Vous avez dépassé votre crédit, s'il vous plaît effectuer le paiement afin que nous puissions préparer votre commande."
}

View File

@ -33,5 +33,7 @@
,"AmountError": "La quantité doit être un neméro positif et inférieur ou égal à la somme restant à payer"
,"PayError": "Impossible d'effectuer le paiement"
,"%A, %e of %B": "%A, %e %B"
,"An error has been in the payment": "Il semble qu'il ya eu une erreur dans le paiement"
,"Retry": "Réessayez"
,"Accept": "Accepter"
}

View File

@ -41,4 +41,6 @@ Vn.Locale.add
,"Oct": "Oct"
,"Nov": "Nov"
,"Dec": "Déc"
,"%A, %B %e": "%A, %B %e"
});

View File

@ -0,0 +1,11 @@
{
"Queries": "Queries"
,"Execute": "Execute"
,"Clean": "Clean"
,"SQL query": "SQL query"
,"Updatable": "Updatable"
,"Query executed!": "Query executed!"
}

View File

@ -1,25 +1,36 @@
{
"Checkout": "Checkout"
,"OrderSummary": "Order summary"
,"Arrival": "Arrival"
,"%A, %e of %B": "%A, %e of %B"
,"Order summary": "Order summary"
,"Delivery at": "Delivery at"
,"Agency": "Agency"
,"Warehouse": "Store"
,"DeliveryAddress": "Delivery address"
,"Import": "Import"
,"TaxBase": "Tax base"
,"VAT": "VAT"
,"Total": "Total"
,"Previous balance": "Previous balance"
,"Order total": "Order total"
,"Order VAT": "Order VAT"
,"Total debt": "Total debt"
,"Credit": "Credit"
,"Exceeded credit": "Exceeded credit"
,"Cancel": "Cancel"
,"Amount to pay": "Amount to pay"
,"Pay method": "Pay method"
,"Use my balance": "Use my balance"
,"You have a favorable balance.": "You do not need to perform any payment, you have a favorable balance."
,"Use my credit": "Use my credit"
,"You have a favorable credit.": "You do not need to pay now, you have a favorable credit."
,"Credit card": "Credit card"
,"You will be redirected to the payment.": "By confirming the order you will be redirected to the payment platform."
,"Bank Transfer": "Bank Transfer"
,"Make a transfer to one account.": "Make a transfer to one of the following accounts and send the receipt to your salesperson."
,"Pay later": "Pay later"
,"Modify": "Modify"
,"Confirm": "Confirm"
,"OrderPlacedSuccessfully": "Your order has been successfully completed"
,"OrderReserved": "We've booked your order but it seems that there have been problems with payment. Contact your sales."
,"Order confirmed successfully": "Your order has been confirmed successfully"
,"Accept": "Accept"
,"PayNow": "Pay now"
,"You have exceeded your credit.": "You have exceeded your credit, in order to prepare your order please pay your debt."
}

View File

@ -33,5 +33,7 @@
,"AmountError": "The amount must be a positive number less than or equal to the outstanding amount"
,"PayError": "Failed to make the payment"
,"%A, %e of %B": "%A, %e of %B"
,"An error has been in the payment": "It seems that there has been an error in the payment"
,"Retry": "Retry"
,"Accept": "Accept"
}

View File

@ -41,4 +41,6 @@ Vn.Locale.add
,"Oct": "Ара"
,"Nov": "Арв"
,"Dec": "Арв"
,"%A, %B %e": "%A, %B %e"
});

View File

@ -0,0 +1,11 @@
{
"Queries": "Queries"
,"Execute": "Execute"
,"Clean": "Clean"
,"SQL query": "SQL query"
,"Updatable": "Updatable"
,"Query executed!": "Query executed!"
}

View File

@ -1,25 +1,36 @@
{
"Checkout": "Finalizar pedido"
,"OrderSummary": "Resumo do pedido"
,"Arrival": "Chegada"
,"%A, %e of %B": "%A, %e de %B"
,"Order summary": "Resumo do pedido"
,"Delivery at": "Entrega na"
,"Agency": "Agência"
,"Warehouse": "Armazém"
,"DeliveryAddress": "Endereço de envío"
,"Import": "Importe"
,"TaxBase": "Base tributável"
,"VAT": "IVA"
,"Total": "Total"
,"Previous balance": "Equilíbrio anterior"
,"Order total": "Total pedido"
,"Order VAT": "IVA pedido"
,"Total debt": "Total deuda"
,"Credit": "Crédito"
,"Exceeded credit": "Crédito excedido"
,"Cancel": "Cancelar"
,"Amount to pay": "Valor devido"
,"Pay method": "Método de pagamento"
,"Use my balance": "Use o meu equilíbrio"
,"You have a favorable balance.": "Não há necessidade de pagar qualquer coisa, você tem um saldo faborable."
,"Use my credit": "Use o meu crédito"
,"You have a favorable credit.": "Não há necessidade de pagar nada, você faborable de crédito."
,"Credit card": "Cartão de crédito"
,"You will be redirected to the payment.": "Ao confirmar o pedido, você será redirecionado para a plataforma de pagamento."
,"Bank Transfer": "Transferência bancária"
,"Make a transfer to one account.": "Faça Transferido para uma das seguintes contas e enviar o comprovante para o seu negócio."
,"Pay later": "Pagar mais tarde"
,"Modify": "Modificar"
,"Confirm": "Confirmar"
,"OrderPlacedSuccessfully": "Seu pedido foi realizado com êxito"
,"OrderReserved": "Seu pedido foi reservado mas parece que houve um problema com o pagamento. Contacte com seu comercial."
,"Order confirmed successfully": "Seu pedido foi realizado com êxito"
,"Accept": "Aceitar"
,"PayNow": "Pagar agora"
,"You have exceeded your credit.": "Você ultrapassou o seu crédito, por favor, fazer o pagamento para que possamos preparar a sua ordem."
}

View File

@ -33,5 +33,7 @@
,"AmountError": "A quantidade deve ser um número positivo e inferior ou igual ao importe pendiente"
,"PayError": "Erro ao realizar o pagamento"
,"%A, %e of %B": "%A, %e de %B"
,"An error has been in the payment": "Parece que não houve um erro no pagamento"
,"Retry": "Tentar novamente"
,"Accept": "Aceitar"
}

View File

@ -41,4 +41,6 @@ Vn.Locale.add
,"Oct": "Out"
,"Nov": "Nov"
,"Dec": "Dez"
,"%A, %B %e": "%A, %B %e"
});

View File

@ -1,8 +1,8 @@
@font-face
{
font-family: 'Open Sans';
src: url('opensans.ttf') format('truetype');
font-family: 'Roboto';
src: url('roboto.ttf') format('truetype');
}
body