Traducción a portugues, Htk.Colum ahora soporta clases css, Htk.Column es ahora el encargado de crear la cabecera del grid (renderHeader), estilo de informes actualizado, formulario tickets actualizado

This commit is contained in:
Juan Ferrer Toribio 2015-11-26 13:30:04 +01:00
parent dc64142141
commit 32e2cd9d8d
67 changed files with 1108 additions and 314 deletions

View File

@ -7,17 +7,17 @@
image="image/dark/preferences.svg"
tip="_ConfigureOrder"
on-click="onConfigureClick"
showText="true"/>
show-text="true"/>
<htk-button
image="image/dark/view-dual.svg"
tip="_Catalog"
on-click="onCatalogClick"
showText="true"/>
show-text="true"/>
<htk-button
image="image/dark/ok.svg"
tip="_Checkout"
on-click="onCheckoutClick"
showText="true"/>
show-text="true"/>
</div>
<div id="form" class="basket">
<div class="box">
@ -48,7 +48,7 @@
<p>
<t>OrderTotal</t>
<htk-text format="%.2d€">
<db-calc-sum func="subtotal" model="items"/>
<db-calc-sum property="param" func="subtotal" model="items"/>
</htk-text>
</p>
</div>

View File

@ -253,10 +253,10 @@ td.third-category
}
.item-box
{
display: inline-block;
text-align: left;
position: relative;
width: 22em;
display: inline-block;
padding: .8em;
margin: .4em;
margin-bottom: .1em;
@ -311,13 +311,6 @@ td.third-category
float: right;
}
/* Transitions */
.right-panel
{
transition: right .3s;
}
/* Mobile */
.catalog-actions > button.menu
@ -340,10 +333,13 @@ td.third-category
top: 0;
right: -17em;
z-index: 20;
transition: 200ms ease-out all;
-webkit-transition: 200ms ease-out all;
}
.right-panel.show
{
right: 0;
transform: translateZ(0) translateX(-17em);
-webkit-transform: translateZ(0) translateX(-17em);
}
.catalog div.center
{

View File

@ -25,14 +25,10 @@ Vn.Orders = new Class
,balanceConditionalFunc: function (field, value)
{
var className = 'balance-amount ';
if (value > 0)
className += 'positive-balance';
Vn.Node.removeClass (this.$('balance'), 'negative');
else
className += 'negative-balance';
field.node.className = className;
Vn.Node.addClass (this.$('balance'), 'negative');
}
,onPayButtonClick: function ()

View File

@ -40,32 +40,33 @@
/* Balance */
.balance img
.balance
{
margin-top: 1.2em;
margin-right: .5em;
}
.balance > *
{
vertical-align: middle;
padding-left: 0.3em;
cursor: pointer;
}
.balance-amount
.balance > .amount
{
color: white;
padding: 0.3em;
}
.balance-info
.balance > .info
{
height: 1em;
display: inline;
cursor: pointer;
height: 1.2em;
cursor: pointer;
}
.positive-balance
.balance > .negative
{
background-color: #EF5350;
border-radius: 0.1em;
box-shadow: 0 0 0.4em #666;
}
.negative-balance
{
color: white;
}
.balance-popup
{
width: 25em;

View File

@ -12,12 +12,26 @@
<h1><t>LastOrders</t></h1>
</div>
<div id="actions">
<div id="balance">
<span class="label"><t>PendingBalance:</t></span>
<htk-label format="%.2d€" conditional-func="balanceConditionalFunc">
<db-calc-sum model="debt-model" column-name="amount" id="debt"/>
</htk-label>
<img src="image/dark/info.svg" title="_PaymentInfo" class="balance-info" alt="Info"/>
<div class="balance">
<span class="label">
<t>Balance:</t>
</span>
<span class="amount" id="balance">
<htk-text
format="%.2d€"
conditional-func="balanceConditionalFunc">
<db-calc-sum
property="param"
model="debt-model"
column-name="amount"
id="debt"/>
</htk-text>
</span>
<img
src="image/dark/info.svg"
title="_PaymentInfo"
class="info"
alt="Info"/>
</div>
<htk-button
id="pay-button"

View File

@ -1,18 +1,57 @@
.ticket
{
padding: 1em;
min-width: 50em;
}
.ticket .box
{
max-width: 70em;
max-width: 30em;
margin: 0 auto;
padding: 2em;
color: #333;
}
/* Data */
/* Header */
.ticket td.label
.ticket .head
{
width: 10em;
padding: 0;
padding-bottom: .2em;
border-bottom: 1px solid #DDD;
margin-bottom: 1em;
}
.ticket .head > div
{
padding-bottom: .8em;
}
.ticket .head p
{
margin: .2em;
}
.ticket .head p.important
{
font-size: 1.4em;
}
.ticket .total
{
text-align: right;
}
/* Lines */
.ticket .line
{
padding: .5em 0;
}
.ticket .line p
{
margin: .1em 0;
}
.ticket .amount
{
float: left;
}
.ticket .subtotal
{
float: right;
}

View File

@ -14,6 +14,11 @@ Vn.Ticket = new Class
{
column.value = this.subtotal (form);
}
,repeaterFunc: function (res, form)
{
res.$('subtotal').value = this.subtotal (form);
}
,subtotal: function (form)
{

View File

@ -29,95 +29,86 @@
image="image/dark/print.svg"
tip="_Print delivery note"
on-click="onPrintClick"
showText="true"/>
show-text="true"/>
</div>
<div id="form" class="ticket">
<div class="box">
<div id="report">
<table class="form">
<tbody>
<tr>
<td class="label">
<label><t>TicketNumber:</t></label>
</td>
<td>
<htk-text column="id" form="ticket"/>
</td>
</tr>
<tr>
<td class="label">
<label><t>DateExit:</t></label>
</td>
<td>
<htk-date-chooser column="date" form="ticket" editable="false"/>
</td>
</tr>
<tr>
<td class="label">
<label><t>SendMethod:</t></label>
</td>
<td>
<htk-text column="Agencia" form="ticket"/>
</td>
</tr>
<tr>
<td class="label">
<label><t>Notes:</t></label>
</td>
<td>
<htk-text column="note" form="ticket"/>
</td>
</tr>
<tr>
<td class="label">
<label for="total"><t>Subtotal:</t></label>
</td>
<td>
<htk-text format="%.2d€">
<db-calc-sum func="subtotal" model="movements"/>
</htk-text>
</td>
</tr>
</tbody>
</table>
<htk-grid model="ticket-data">
<htk-column-spin title="_PC" column="zip_code"/>
<htk-column-text title="_City" column="city"/>
<htk-column-text title="_Province" column="province"/>
<htk-column-text title="_Address" column="name"/>
<htk-column-text title="_Consignee" column="consignee"/>
</htk-grid>
<htk-grid>
<db-model property="model" id="movements">
<custom>
SELECT m.item_id, amount, concept, Categoria, Medida, Tallos, Color,
Abreviatura, IF(fixed != FALSE, price, NULL) price, fixed, discount
FROM ticket_row_view m
INNER JOIN vn2008.Articles a
ON m.item_id = a.Id_Article AND ticket_id = #ticket
LEFT JOIN vn2008.Origen o
ON a.id_origen = o.id
ORDER BY concept
</custom>
<sql-batch property="batch">
<custom>
<item name="ticket" param="ticket-id"/>
</custom>
</sql-batch>
</db-model>
<htk-column-spin title="_ItemNumber" column="item_id"/>
<htk-column-spin title="_Amount" column="amount"/>
<htk-column-text title="_Item" column="concept"/>
<htk-column-text title="_Category" column="Categoria"/>
<htk-column-text title="_S1" column="Medida"/>
<htk-column-text title="_Stems" column="Tallos"/>
<htk-column-text title="_Color" column="Color"/>
<htk-column-text title="_Origin" column="Abreviatura"/>
<htk-column-spin title="_Price" column="price" unit="€" digits="2"/>
<htk-column-spin title="_Desc" column="discount" unit="%"/>
<htk-column-spin title="_Subtotal" unit="€" digits="2" renderer="subtotalRenderer"/>
</htk-grid>
<div class="head">
<div>
<p class="important ticket-id">
<htk-text column="id" form="ticket"/>
</p>
</div>
<div>
<p>
<t>Delivery</t> <htk-text form="ticket" column="Agencia"/>
</p>
<p>
<htk-text form="ticket" column="consignee"/>
</p>
<p>
<htk-text form="ticket" column="name"/>
</p>
<p>
<htk-text form="ticket" column="zip_code"/>
<htk-text form="ticket" column="city"/>
(<htk-text form="ticket" column="province"/>)
</p>
</div>
<div>
<p class="important total">
Total
<htk-text format="%.2d€">
<db-calc-sum property="param" func="subtotal" model="movements"/>
</htk-text>
</p>
</div>
</div>
<!-- <htk-grid>
<htk-column-spin title="_Ref" column="item_id"/>
<htk-column-spin title="_Amount" column="amount"/>
<htk-column-text title="_Item" column="concept"/>
<htk-column-text title="_S1" column="Medida"/>
<htk-column-text title="_Cat" column="Categoria"/>
<htk-column-spin title="_Price" column="price" unit="€" digits="2"/>
<htk-column-spin title="_Subtotal" unit="€" digits="2" renderer="subtotalRenderer"/>
</htk-grid>
--> <htk-repeater form-id="iter" renderer="repeaterFunc">
<db-model property="model" id="movements">
<custom>
SELECT m.item_id, amount, concept, Categoria, Medida, Tallos, Color,
Abreviatura, IF(fixed != FALSE, price, NULL) price, fixed, discount
FROM ticket_row_view m
INNER JOIN vn2008.Articles a
ON m.item_id = a.Id_Article AND ticket_id = #ticket
LEFT JOIN vn2008.Origen o
ON a.id_origen = o.id
ORDER BY concept
</custom>
<sql-batch property="batch">
<custom>
<item name="ticket" param="ticket-id"/>
</custom>
</sql-batch>
</db-model>
<custom>
<div class="line">
<p class="concept">
<htk-text form="iter" column="concept"/>
<htk-text form="iter" column="Medida"/>
<htk-text form="iter" column="Categoria"/>
</p>
<p class="amount">
<htk-text form="iter" column="amount"/> x
<htk-text form="iter" column="price" format="%.2d€"/>
</p>
<p class="subtotal">
<htk-text id="subtotal" format="%.2d€"/>
</p>
<div class="clear"/>
</div>
</custom>
</htk-repeater>
</div>
</div>
</vn>

View File

@ -4,15 +4,23 @@
<vn-param id="new-id"/>
</vn-hash-param>
<db-form id="iter" on-status-changed="onStatusChange">
<db-param column="text" on-changed="onBodyChange"/>
<db-model id="model" updatable="true" on-operations-done="onOperationsDone">
SELECT id, title, text, tag
FROM news WHERE id = #new
<db-model
id="model"
property="model"
updatable="true"
on-operations-done="onOperationsDone">
<custom>
SELECT id, title, text, tag
FROM news WHERE id = #new
</custom>
<sql-batch property="batch">
<item name="new" param="new-id"/>
<custom>
<item name="new" param="new-id"/>
</custom>
</sql-batch>
</db-model>
</db-form>
<db-param form="iter" column="text" on-changed="onBodyChange"/>
</vn-group>
<div id="title">
<h1><t>AddEditNew</t></h1>
@ -34,14 +42,16 @@
<div class="form">
<div class="form-group">
<label><t>Title</t></label>
<htk-entry column="title" form="iter"/>
<htk-entry form="iter" column="title"/>
</div>
<div class="form-group">
<label><t>Tag</t></label>
<htk-combo column="tag" form="iter">
<htk-combo form="iter" column="tag">
<db-model property="model">
SELECT name, description FROM news_tag
ORDER BY description
<custom>
SELECT name, description FROM news_tag
ORDER BY description
</custom>
</db-model>
</htk-combo>
</div>

View File

@ -12,12 +12,14 @@
<div id="form" class="news">
<div class="box">
<htk-grid show-header="false">
<db-model id="news-model" updatable="true">
SELECT n.id, c.Cliente, priority, image,
CONCAT(LEFT(n.title, 25), '...') title
FROM news n
JOIN vn2008.Clientes c ON n.user_id = c.Id_Cliente
ORDER BY priority, n.date_time DESC
<db-model property="model" id="news-model" updatable="true">
<custom>
SELECT n.id, c.Cliente, priority, image,
CONCAT(LEFT(n.title, 25), '...') title
FROM news n
JOIN vn2008.Clientes c ON n.user_id = c.Id_Cliente
ORDER BY priority, n.date_time DESC
</custom>
</db-model>
<htk-column-button
column="id"

View File

@ -307,15 +307,14 @@
/* Transitions */
.vn-gui > .left-panel,
.vn-gui > .body
{
transition-property: left, right;
transition-duration: .3s;
transition-duration: 200ms;
}
.vn-gui .top-bar
{
transition: background-color .3s;
transition: background-color 300ms;
}
/* Desktop */
@ -354,10 +353,13 @@
top: 0;
left: -15em;
box-shadow: 0 0.2em 0.2em #333;
transition: 200ms ease-out all;
-webkit-transition: 200ms ease-out all;
}
.vn-gui .left-panel.show
{
left: 0;
transform: translateZ(0) translateX(15em);
-webkit-transform: translateZ(0) translateX(15em);
}
.vn-gui .form-holder
{

View File

@ -15,7 +15,7 @@
width: 100%;
page-break-after: always;
}
.print-button
#topbar
{
display: none;
}
@ -25,6 +25,7 @@
body
{
background-color: #EEE;
padding-top: 3.9em;
}
.sheet
{
@ -35,24 +36,33 @@
box-shadow: 0 1mm 1mm #CCC;
padding: 20mm;
}
.print-button
#topbar
{
position: fixed;
top: 1.5em;
right: 1.5em;
border-radius: 2px;
top: 0;
left: 0;
right: 0;
height: 4em;
background-color: #009688;
z-index: 100;
box-shadow: 0 .1em .1em #AAA;
}
#topbar > button
{
float: right;
background-color: transparent;
color: white;
padding: .4em;
z-index: 100;
border: none;
cursor: pointer;
box-shadow: 0 .1em .1em #AAA;
font-size: 1.4em;
font-size: 1.15em;
height: 100%;
padding: 0 1em;
}
.print-button:hover
#topbar > button:hover
{
background-color: #00796B;
background-color: rgba(1, 1, 1, 0.2);
}
}
*
@ -74,3 +84,37 @@ body
/* page-break-after: always;*/
}
/* Widgets */
.htk-grid
{
border-collapse: collapse;
width: 100%;
margin: 0 auto;
padding: 0;
}
.htk-grid > thead > tr
{
border-bottom: 1px solid #333;
height: 10mm;
}
.htk-grid > thead th
{
text-align: left;
font-weight: normal;
}
.htk-grid tr
{
height: 2em;
}
.htk-grid > thead th,
.htk-grid td
{
padding-left: 3mm;
}
.htk-grid .cell-spin
{
text-align: right;
}

View File

@ -10,5 +10,9 @@
<link rel="stylesheet" type="text/css" href="report.css"/>
<title>Report</title>
</head>
<body></body>
<body>
<div id="topbar">
<button id="print">Print</button>
</div>
</body>
</html>

View File

@ -56,7 +56,7 @@ Vn.Report = new Class
{
var reportWindow = window.open (
'js/hedera/report.html', '_blank',
'height=950, width=950, resizable=yes, fullscreen=no,'+
'height=650, width=950, resizable=yes, fullscreen=no,'+
'titlebar=no, menubar=no, toolbar=no, location=no, scrollbars=yes'
);
@ -83,11 +83,9 @@ Vn.Report = new Class
this.includeCss ('reports/'+ this.info.path +'/style.css');
var printButton = this.doc.createElement ('button');
printButton.className = 'print-button';
printButton.appendChild (this.doc.createTextNode (_('Print')));
var printButton = this.doc.getElementById ('print');
printButton.addEventListener ('click', this.print.bind (this));
this.doc.body.appendChild (printButton);
Vn.Node.setText (printButton, _('Print'));
this.onWindowCreate ();
}

View File

@ -43,14 +43,22 @@ Htk.Column = new Class
type: String
,set: function (x)
{
this._class = x;
this._userCssClass = x;
if (this._cssClass)
this._cssClass = x +' '+ this._cssClass;
else
this._cssClass = x;
}
,get: function ()
{
return this._class;
return this._userCssClass;
}
}
}
,_cssClass: null
,_userCssClass: null
/**
* Initializes the column.
@ -60,6 +68,16 @@ Htk.Column = new Class
this.td = document.createElement ('td');
this.parent (props);
}
,renderHeader: function ()
{
var th = document.createElement ('th');
if (this.title)
th.appendChild (document.createTextNode (this.title));
return th;
}
/**
* Draws the cell and returns its associated td.
@ -71,8 +89,8 @@ Htk.Column = new Class
{
var td = this.td.cloneNode (true);
if (this._class)
td.className = this._class;
if (this._cssClass)
td.className = this._cssClass;
return td;
}

View File

@ -15,13 +15,18 @@ Htk.ColumnButton = new Class
,value: null
}
}
,initialize: function (props)
{
this._cssClass = 'cell-button';
this.parent (props);
}
,render: function (tr)
{
var td = this.parent (tr);
var button = document.createElement ('button');
button.className = 'cell-button';
button.addEventListener ('click',
this.buttonClicked.bind (this, this.value, tr, button));
td.appendChild (button);

View File

@ -3,6 +3,12 @@ Htk.ColumnCheck = new Class
Extends: Htk.Column
,Tag: 'htk-column-check'
,initialize: function (props)
{
this._cssClass = 'cell-check';
this.parent (props);
}
,render: function (tr)
{
var checkButton = document.createElement ('input');
@ -16,7 +22,6 @@ Htk.ColumnCheck = new Class
checkButton.disabled = true;
var td = this.parent (tr);
td.style.textAlign = 'center';
td.appendChild (checkButton);
return td;
}

View File

@ -22,13 +22,18 @@ Htk.ColumnDate = new Class
}
,_format: _('%a, %e %b %Y')
,initialize: function (props)
{
this._cssClass = 'cell-date';
this.parent (props);
}
,render: function (tr)
{
var text = Vn.Date.strftime (this.value, this._format);
var td = this.parent (tr);
td.style.textAlign = 'left';
td.appendChild (document.createTextNode (text));
return td;

View File

@ -13,7 +13,7 @@ Htk.ColumnImage = new Class
,set: function (x)
{
this._directory = x;
this.basedir = Vn.Config['image_dir'] +'/'+ x;
this._basedir = Vn.Config['image_dir'] +'/'+ x;
}
,get: function ()
{
@ -54,24 +54,18 @@ Htk.ColumnImage = new Class
}
,_directory: null
,basedir: null
,_basedir: null
,initialize: function (props)
{
this._cssClass = 'cell-image';
this._fullImage = new Htk.FullImage ();
this.parent (props);
this.fullImage = new Htk.FullImage ();
}
,render: function (tr)
{
var td = this.parent (tr);
var className = 'cell-image';
if (td.className)
className = td.className +' '+ className;
td.className = className;
var img = document.createElement ('img');
img.alt = ''
@ -107,7 +101,7 @@ Htk.ColumnImage = new Class
{
if (cell.value)
{
var url = this.basedir +'/';
var url = this._basedir +'/';
if (this.subdir)
url += this.subdir +'/';
@ -141,12 +135,12 @@ Htk.ColumnImage = new Class
src += '?'+ cell.stamp;
if (!cell.error)
this.fullImage.show (this.basedir +'/'+ src);
this._fullImage.show (this._basedir +'/'+ src);
}
,onMouseOut: function ()
{
this.fullImage.hide ();
this._fullImage.hide ();
}
,onDoubleClick: function (cell)

View File

@ -33,7 +33,6 @@ Htk.ColumnLink = new Class
link.target = this.target;
var td = this.parent (tr);
td.style.textAlign = 'left';
td.appendChild (link);
return td;
}

View File

@ -16,8 +16,9 @@ Htk.ColumnRadio = new Class
,initialize: function (props)
{
this.parent (props);
this._cssClass = 'cell-radio';
this.radioGroup = new Htk.RadioGroup ();
this.parent (props);
}
,render: function (tr)

View File

@ -20,11 +20,23 @@ Htk.ColumnSpin = new Class
,value: 0
}
}
,initialize: function (props)
{
this._cssClass = 'cell-spin';
this.parent (props);
}
,renderHeader: function ()
{
var th = this.parent ();
th.className = 'cell-spin';
return th;
}
,render: function (tr)
{
var td = this.parent (tr);
td.style.textAlign = 'right';
var valueString = null;
@ -35,7 +47,6 @@ Htk.ColumnSpin = new Class
{
var entry = document.createElement ('input');
entry.type = 'text';
entry.className = 'cell-spin';
entry.addEventListener ('change', this.inputChanged.bind (this, tr, entry));
td.appendChild (entry);

View File

@ -23,6 +23,12 @@ Htk.ColumnText = new Class
,_format: null
,initialize: function (props)
{
this._cssClass = 'cell-text';
this.parent (props);
}
,render: function (tr)
{
var node;
@ -33,7 +39,6 @@ Htk.ColumnText = new Class
node = document.createElement ('input');
node.type = 'text';
node.className = 'cell-text';
node.value = value;
node.addEventListener ('changed',
this.inputChanged.bind (this, tr, node));
@ -43,7 +48,6 @@ Htk.ColumnText = new Class
Vn.Value.format (this.value, this._format));
var td = this.parent (tr);
td.style.textAlign = 'left';
td.appendChild (node);
return td;
}

View File

@ -302,7 +302,7 @@ Htk.Grid = new Class
,addColumn: function (pos, column)
{
var header = document.createElement ('th');
var header = column.renderHeader ();
if (pos == -1 || pos >= this.columns.length)
{
@ -318,12 +318,6 @@ Htk.Grid = new Class
header.addEventListener ('click',
this.sortModel.bind (this, column));
header.title = _('Sort');
if (column.title)
{
var title = document.createTextNode (column.title);
header.appendChild (title);
}
column.on ('changed', this.columnChanged, this);

View File

@ -5,24 +5,22 @@
{
margin: auto;
border-collapse: collapse;
text-align: center;
}
.htk-grid > thead > tr,
.htk-grid > tfoot > tr
{
background-color: #009688;
vertical-align: middle;
text-align: center;
height: 3em;
}
.htk-grid > thead th
.htk-grid th
{
color: white;
cursor: pointer;
font-weight: normal;
padding: 0 0.4em;
}
.htk-grid > thead th:hover
.htk-grid th:hover
{
background-color: rgba(1, 1, 1, 0.2);
}
@ -39,18 +37,6 @@
{
background-color: transparent;
}
.htk-grid .message
{
padding: 1.5em;
}
.htk-grid .message > img,
.htk-grid .message > .htk-spinner
{
display: inline-block;
vertical-align: middle;
padding-right: 0.8em;
height: 1.8em;
}
.htk-grid > tbody tr
{
border-top: 1px solid #DDD;
@ -64,22 +50,58 @@
margin: 0;
padding: 0 0.5em;
}
.htk-grid > tbody td:first-child,
.htk-grid > thead th:first-child
.htk-grid th,
.htk-grid td
{
text-align: left;
}
.htk-grid td:first-child,
.htk-grid th:first-child
{
padding-left: 1em;
}
.htk-grid > tbody td:last-child,
.htk-grid > thead th:last-child
.htk-grid td:last-child,
.htk-grid th:last-child
{
padding-right: 1em;
}
.htk-grid .cell-spin
.htk-grid .message
{
padding: 1.5em;
text-align: center;
}
.htk-grid .message > *
{
display: inline-block;
vertical-align: middle;
padding-right: 0.8em;
}
.htk-grid .message > img
{
height: 1.8em;
}
/* Grid cells */
th.cell-spin
{
text-align: right;
}
td.cell-spin
{
width: 2.5em;
text-align: right;
}
.htk-grid .cell-button
th.cell-check,
th.cell-radio
{
text-align: center;
}
td.cell-button
{
text-align: center;
}
td.cell-button > button
{
margin: 0;
padding: 0.5em;
@ -87,17 +109,21 @@
background-color: transparent;
border-radius: 0.1em;
}
.htk-grid .cell-button:hover
td.cell-button > button:hover
{
background-color: rgba(1, 1, 1, 0.1);
}
.htk-grid .cell-button img
td.cell-button img
{
height: 1.5em;
display: block;
margin: auto;
}
.htk-grid .cell-image > img
td.cell-image
{
text-align: center;
}
td.cell-image img
{
max-width: 2.5em;
max-height: 2.5em;

View File

@ -10,8 +10,8 @@
,"LastOrders": "Últimes comandes"
,"PendingBalance:": "Saldo pendent:"
,"PaymentInfo": "Per realitzar una entrega a compte fes clic al botó de la dreta i fes el pagament a l'empresa corresponent. La quantitat que apareix és el saldo pendent a dia d'avui, no té en compte comandes del futur. Pots realitzar un lliurament a compte de la quantitat que desitgis. Si vols pagar una comanda en concret pots prémer directament el botó de pagament de la comanda."
,"Balance:": "Saldo:"
,"PaymentInfo": "La quantitat que mostrada és el teu saldo pendent (negatiu) o favorable a dia d'avui, no té en compte comandes del futur. Perquè la teva comanda sigui enviat, aquesta quantitat ha de ser igual o més gran que 0. Si vols fer un lliurament a compte, esborra la quantitat suggerida i introdueix la quantitat que vulguis."
,"MakePayment": "Realitzar pagament"
,"Company": "Empresa"
,"Pending": "Pendent"

View File

@ -10,8 +10,8 @@
,"LastOrders": "Last orders"
,"PendingBalance:": "Pending balance:"
,"PaymentInfo": "To make a down payment click the right button and make the payment on the relevant company. The amount shown is the outstanding balance today, it does not take into account future orders. You can make a down payment on the amount you want."
,"Balance:": "Balance:"
,"PaymentInfo": "The amount shown is your slope (negative) or favorable balance today, it disregards future orders. For get your order shipped, this amount must be equal to or greater than 0. If you want to make a down payment, delete the suggested amount and enter the amount you want."
,"MakePayment": "Make payment"
,"Company": "Company"
,"Pending": "Pending"

View File

@ -10,8 +10,8 @@
,"LastOrders": "Últimos pedidos"
,"PendingBalance:": "Saldo pendiente:"
,"PaymentInfo": "Para realizar una entrega a cuenta pulsa en el botón de la derecha y haz el pago en la empresa correspondiente. La cantidad que aparece es el saldo pendiente a día de hoy, no tiene en cuenta pedidos del futuro. Puedes realizar una entrega a cuenta de la cantidad que desees."
,"Balance:": "Saldo:"
,"PaymentInfo": "La cantidad que mostrada es tu saldo pendiente (negativa) o favorable a día de hoy, no tiene en cuenta pedidos del futuro. Para que tu pedido sea enviado, esta cantidad debe ser igual o mayor que 0. Si quieres realizar una entrega a cuenta, borra la cantidad sugerida e introduce la cantidad que desees."
,"MakePayment": "Realizar pago"
,"Company": "Empresa"
,"Pending": "Pendiente"

View File

@ -10,8 +10,8 @@
,"LastOrders": "Les dernières commandes"
,"PendingBalance:": "Balance:"
,"PaymentInfo": "Pour effectuer un paiement vers le bas, cliquez sur le bouton à droite et effectuer le paiement par la société. Le montant indiqué est le solde aujourd'hui, ne prend pas en compte les commandes futures. Vous pouvez faire un acompte sur le montant que vous voulez. Si vous voulez payer un ordre spécifique, vous pouvez cliquer directement sur le bouton de paiement Ordre."
,"Balance:": "Balance:"
,"PaymentInfo": "Le montant indiqué est votre pente (négative) ou balance favorable aujourd'hui, ne tient pas compte pour les commandes futures. Obtenir votre commande est expédiée, ce montant doit être égal ou supérieur à 0. Si vous voulez faire un versement, le montant suggéré effacé et entrez le montant que vous souhaitez."
,"MakePayment": "Effectuer un paiement"
,"Company": "Entreprise"
,"Pending": "Pente"

View File

@ -10,8 +10,8 @@
,"LastOrders": "Last orders"
,"PendingBalance:": "Pending balance:"
,"PaymentInfo": "To make a down payment click the right button and make the payment on the relevant company. The amount shown is the outstanding balance today, it does not take into account future orders. You can make a down payment on the amount you want."
,"Balance:": "Balance:"
,"PaymentInfo": "Үзүүлсэн хэмжээ цаашид захиалга эзэлж биш, таны налуу (сөрөг), эсвэл тааламжтай тэнцвэр нь өнөөдөр юм. Хэрэв та дүн арилгаж гэж хэлж байсан нь доош нь төлбөр хийж, өөрийн хүссэн хэмжээгээр орж хүсэж байгаа бол таны захиалга ирдэг бол авах, энэ хэмжээ тэнцүү буюу 0-ээс их байх ёстой."
,"MakePayment": "Make payment"
,"Company": "Company"
,"Pending": "Pending"

View File

@ -0,0 +1,11 @@
{
"Addresses": "Endereços
,"Return": "Voltar"
,"AddAddress": "Adicionar Endereço"
,"SetAsDefault": "Selecionar como pre-determinado"
,"RemoveAddress": "Eliminar Endereço"
,"EditAddress": "Modificar Endereço"
,"AreYouSureDeleteAddress": "Tens certeza que queres eliminar este endereço?"
}

View File

@ -0,0 +1,15 @@
{
"AddEditAddress": "Adicionar ou modificar endereço"
,"Name": "Consignatario"
,"Address": "Endereço"
,"City": "Municipio"
,"ZipCode": "Código postal"
,"Country": "País"
,"Province": "Distrito"
,"Return": "Voltar"
,"Accept": "Aceitar"
,"AddressChangedSuccessfully": "Endereço modificado corretamente"
}

View File

@ -0,0 +1,19 @@
{
"Configuration": "Configuração"
,"UserNumber": "Nº usuario"
,"UserName": "Nome de usuario"
,"Password": "Palavra-Passe"
,"Email": "E-Mail"
,"Billing": "Facturação"
,"ReceiveInvoicesByEmail": "Receber facturas por e-mail"
,"NewPassword": "Nova Palavra-Passe"
,"RepeatPassword": "Repetir Palavra-Passe"
,"MustReloginIfChange": "Para modificar seu nome de usario deves voltar a inicar sessão"
,"PasswordsChanged": "Palavra-Passe Modificada!"
,"PasswordsDoesntMatch": "As Palavras-Passe não coincidem!"
,"Addresses": "Endereços"
}

View File

@ -0,0 +1,15 @@
{
"AccessLog": "Registro de acessos"
,"UserNumber:": "Nº usuario:"
,"User:": "Usuario:"
,"Phone:": "Telefone:"
,"Mobile:": "Telemóvel:"
,"Access": "Acceso"
,"OS": "OS"
,"Browser": "Navegador"
,"Version": "Versão"
,"Javascript": "Javascript"
,"Cookies": "Cookies"
}

View File

@ -0,0 +1,9 @@
{
"Item list": "Lista de Ítens"
,"Store": "Armazém"
,"Realm": "Reino"
,"Rate": "Tarifa"
,"Preview": "Mostrar"
}

View File

@ -0,0 +1,6 @@
{
"ControlPanel": "Painel de controle"
,"Module": "Módulo"
,"Description": "Descrição"
}

View File

@ -0,0 +1,12 @@
{
"Photos": "Fotos"
,"Schema": "Esquema"
,"ImageName": "Nome da imagem"
,"Id": "Id"
,"ImageFile": "Arquivo de imagem"
,"Upload": "Enviar"
,"ImageUploaded": "Imagem subida correctamente"
}

View File

@ -0,0 +1,21 @@
{
"Configuration": "Configuração"
,"Select config": "Selecione a configuração"
,"Reign": "Reino"
,"Family": "Familia"
,"Store": "Armazém"
,"Date": "Data"
,"Shelf": "Pratilheira"
,"Name prefix": "Prefixo do nome"
,"Limit amount per item": "Limíte de quantidade por ítem"
,"Title": "Título"
,"Show packing": "Mostrar unidades por caixa"
,"Stack different items": "Empilhar ítens diferentes"
,"Preview": "Mostrar"
,"Pallets": "Palets"
,"No items found, check that all fields are correct":
"Nenhum ítem encontrado, comprove que todos os campos estão corretos"
}

View File

@ -0,0 +1,12 @@
{
"UserManagement": "Gestão de usuarios"
,"UserName:": "Nome de usuario:"
,"UserNumber": "Nº usuario"
,"UserName": "Nome de usuario"
,"Alias": "Alias"
,"AccessAsUser": "Suplantar usuario"
,"AccessLog": "Registro de acessos"
}

View File

@ -0,0 +1,31 @@
{
"Visits": "Visitas"
,"VisitsManagement": "Gestão de visitas"
,"ActiveSessions": "Usuarios conectados"
,"VisitsQuery": "Consulta de visitas"
,"Refresh": "Actualizar"
,"ActiveSessions:": "Usuarios conectados:"
,"NewVisitsTotal:": "Novas visitas:"
,"SessionNumber": "Nº sessão"
,"User": "Usuario"
,"Login": "Hora de acceso"
,"LastActivity": "Última atividade"
,"SO": "Sistema Operativo"
,"Version": "Versão"
,"NewVisit": "Nova visita"
,"SelectDateInterval": "Selecciona un intérvalo de datas"
,"FromDate:": "Desde o día:"
,"ToDate:": "Até o día:"
,"VisitsTotal:": "Total visitas:"
,"Browser": "Navegador"
,"MinVersion": "Versão mínima"
,"MaxVersion": "Versão máxima"
,"LastVisit": "Última visita"
,"NewVisits": "Novas visitas"
,"%a, %e %b %Y at %T": "%a, %e %b %Y a las %T"
}

View File

@ -0,0 +1,9 @@
{
"ListByAgency": "Bultos por agencia"
,"ShowByProvince": "Mostrar desglosse por Distrito"
,"Agency": "Agencia"
,"Exps": "Exps."
,"Bundles": "Bultos"
,"Prevision": "Prev."
}

View File

@ -0,0 +1,10 @@
{
"ByProvince": "Desglosse por Distritos"
,"Return": "Voltar"
,"SelectAgency": "Seleccione uma agência"
,"Province": "Distrito"
,"Expeditions": "Exps."
,"Left": "Faltam"
}

View File

@ -0,0 +1,47 @@
{
"QualityAndVariety": "Qualidade, variedade e serviço"
,"MaximumFreshness": "Verdnatura lhe ofrece um produto com a máxima frescura garantida, graças a suas recepções diárias de flor e planta procedentes de Holanda, América do Sul, ou desde o mesmo produtor."
,"SquareMeters": "Mais de 13.000m de instalações"
,"AboutRealms": "Com flor cortada, verdes, artificial e complementos"
,"AboutLocation": "Asentados em Valencia, Madrid, Barcelona, Holanda e França, oferecemos venta direta em nossas instalações e Entregamos a toda Espanha mediante serviço proprio ou agência."
,"PurchaseThroughWeb": "Compra a través de nossa web e receba o pedido cômodamente em sua florista."
,"WhatMakeUsDifferent": "O Que nos faz diferentes?"
,"DesignVariety": "A variedade no desenho, a qualidade dos materiais utilizados e nosso serviço de entrega, te garantizam uma amostra de produto dinámico, sempre fresco e atrativo."
,"AdaptToYourNeeds": "Verdnatura se adapta às necessidades de cada cliente oferecendo-te um amplo leque de produtos, garantido sempre."
,"TheBestQuality": "A melhor qualidade ao melhor preço. Sen esquecer nunca do desenho."
,"AtYourService": "Estamos a seu serviço"
,"BuyersAndTraders": "9 compradores especializados e nossos 20 comerciais te asessorarão em tudo o que necessites."
,"Training": "Verdnatura formação"
,"GoodTraining": "Em Verdnatura sabemos que uma boa formação é imprescindível para o desenvolvimento ótimo de qualqer atividade, e como não, também a de florista."
,"SpecialTrainingPrices": "Para que o orçamento de uma escola não repercuta na qualidade da sua formação, colaboramos com uma política de preços especiais para todas aquelas escolas que solicitem realizar cursos em nossas instalações de Verdnatura Silla."
,"YoutubeChannel": "E não perdas os vídeos do Canal Verdnatura em Youtube. Onde vas a encontrar um montão de conselhos muito interessantes sobre o manuseio da flor."
,"HowWeWork": "Como Trabalhamos?"
,"FirstQualityControl": "1º controle de qualidade"
,"SecondQualityControl": "2º controle de qualidade"
,"ThirdQualityControl": "3º controle de qualidade"
,"FourthQualityControl": "4º controle de qualidade"
,"AalsmeerAuction": "Às 5:00h, nossos responsáveis de compras adquirem, no leilão de Aalsmeer e Noaldwijk, o material que o produtor colheu no dia día anterior."
,"BeforeAuction": "Após sua compra, este material entra rápidamente em Verdnatura Holland BV, nossa empresa de Flora Holland, em Aalsmeer."
,"DirectlyFromProviders": "Além de comprar a través do leilão Holandes, também compramos diretamente a produtores de Colombia, Equador, Thailandia, Malasia, África e Australia. Estes productos são supervisados diretamente por nossos delegados de compra ubicados em cada zona. Esta mercadoria viajará a Amsterdam, submetida a um proceso de Vaacum e em menos de duas horas desde sua aterrizagem, estará em nossas instalações de Aalsmeer."
,"GoodsDischarge": "Às 7:00h nossos companheiros de Aalsmeer começam a receber a mercadoria comprada, passando um primeiro controle de qualidade, e registrando-a em nosso estoque. Já está disponivel para nossos clientes em nossa pagina online."
,"GoodsTravel": "A mercadoria viaja durante um día e meio em camiões com compartimentos herméticos com temperaturas diferentes, de maneira que não se interrompa a cadeia de frío e viaje nas melhores condições."
,"GoodsReception": "Na recepção da mercadoria o responsável da compra revisa o estado em que chega, aceitándo-la ou recuzando-a segundo o caso, se descarrega em frío e rápidamente entra em nossa câmara."
,"CustomerOrders": "Nossos clientes podem fazer seus pedidos a través da pagina web, por telefone ou vindo diretamente a nossas instalações. Temos uma equipa de comerciais especializados que lhe vai a asesorar em sua compra e lhe informará das novidades e ítens que possam ser de seu interesse, de forma que sua compra se ajuste às suas necessidades, e fique totalmente satisfeito."
,"AfterOrder": "Uma vez realizado o pedido, passa ao departamento de produção. Durante a preparação deste, se realiza um novo controle de qualidade (o terceiro), no qual se eliminará a mercadoria deficiente."
,"BuyerControl": "Quando se finaliza a preparação, se realiza um novo controle (o quarto) onde um especialista conta e revisa o estado dos produtos. Em caso de que estes não cumpram com o estandard de qualidade exigidos os recusa e os substitue pelos adequados."
,"EmbeddedSection": "Seguidamente se leva à sessão de encaixado, onde o pedido é acondicionado para sua correta entrega. Cada tipo de entrega requer un método de encaixado adequado para que o produto viaje protegido e chegue ao cliente em perfeitas condições."
,"AfterEmbedAgency": "Quando producto já foi encaixado se armazena de novo na câmara até sua saída por agência ou pelo nosso transporte proprio, recibiéndolo el cliente, em 24h no caso de agência ou no mesmo dia no caso de nosso transporte, cômodamente em sua morada."
,"FreshnessGuaranteed": "Esta forma de trabalho garante a maior frescura pela rapidez dos processos e pela manutenção da cadeia de frio desde a compra até sua recepção por nosso cliente."
,"AboutSummary": "75 pessoas divididas por quase todo o mundo para que nosso cliente tenha o mais amplo catálogo do sector, a flor mais fresca, a planta mais novedosa, os complementos mais actuais e o serviço mais rápido possível."
}

View File

@ -0,0 +1,20 @@
{
"IWantCustomer": "Quero ser cliente!"
,"FillFormData": "Preencha o formulário com seus dados e em breve nos colocaremos em contacto contigo."
,"OrCallUs": "Ou se preferes ligue-nos ao +34 963 242 100."
,"AllFieldsMandatory": "* Todos os campos são obrigatorios."
,"Name": "Nome"
,"Surname": "Apelidos"
,"EMail": "E-Mail"
,"Message": "Menssagem"
,"Address": "Endereço"
,"PC": "Código postal"
,"City": "Município"
,"Phone": "Telefone"
,"Send": "Enviar dados"
,"DataSentSuccess": "Seus dados foram enviados corretamente.Em breve nos colocaremos em contacto contigo."
,"ErrorSendingData": "Erro ao enviar os dados. Por favor, comprove que há preenchido todos os campos e que há introduzido o código anti-spam corretamente."
}

View File

@ -0,0 +1,13 @@
{
"Sent": "Enviado"
,"Author": "Autor"
,"votes": "votos"
,"NoAnswerSelected": "Não seleccionou nenhuma resposta"
,"ThanksForVote": "Obrigado por seu voto!"
,"Vote": "Votar"
,"Total": "Total"
,"BrownserRecommend":
"Verdnatura recomenda utilizar o navegador web Mozilla Firefox para obter toda a funcionalidade de nossa página web."
,"PressHere": "Pulse aquí para baixar Firefox"
}

View File

@ -0,0 +1,3 @@
{
"ShowMap": "Mostrar mapa"
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,25 @@
{
"AboutCompany": "Por quê Verdnatura?"
,"StorePhoto": "Foto armazém"
,"BecauseOurBigCatalog": "Porque temos o maior catálogo do sector, renovado diariamente."
,"BecauseThisWeb": "Por este site, com estoque em tempo real sempre à sua disposição."
,"BecauseOurShoppingDep": "Por nosso departamento de compras com 9 compradores especializados."
,"BecauseOrderIsEasy": "Porque é muito fácil fazer pedidos por internet, aplicativo ou telefone."
,"BecauseOurPlant": "Por nossas instalações, venha e visite-nos. Vas a adorar."
,"BecauseOurSalesDep": "Por nosso departamento comercial, com profissionais que sempre encontrarão uma solução para suas necessidades."
,"BecauseOurWorkShop": "Porque temos uma oficina de confecção para ajudar-te."
,"BecauseWeHaveWhatYouNeed": "Porque temos o que necessitas quando necessitas."
,"AboutDesc":
"Somos uma empresa dedicada à venta grossista e distribuição de uma ampla gama de complementos, verdes e flores naturaise a floristas ou outros grossistas."
,"AboutService":
"Contamos com serviço de entrega a domicilio com nossos veículos por toda a provincia de Valencia e áreas limitadas de Castellón, Alicante, Murcia, Albacete e Madrid enviamos ao resto da península mediante agencias de transporte com serviço 24/48 horas (MRW, Zeleris, Viaexpress). Também realizamos venta directa a floristas em qualquer de nossas instalações."
,"AboutDisp":
"Nossa empresa tem mais de 50 trabalhadores e varias sucursais. A principal se encontra situada em Valencia e conta com mais de 8.000m2."
,"AboutOrder":
"Podes realizar seus pedidos e reservas por telefone ligando ao +34 96 324 21 00, por Internet a través de nossa página web, por nosso aplicativo para Android, ou diretamente em nossas instalações."
}

View File

@ -0,0 +1,29 @@
{
"ShoppingBasket": "Cesta da compra"
,"Delete": "Eliminar pedido"
,"GoToCatalog": "Ir ao catálogo"
,"ConfigureOrder": "Configurar pedido"
,"Checkout": "Finalizar pedido"
,"OrderNumber": "Nº pedido"
,"DateExit": "Data de saída"
,"Warehouse": "Armazém"
,"OrderTotal": "Total"
,"Amount": "Quantidade"
,"Pack": "Pack"
,"Stems": "Talos"
,"Avail": "Disp"
,"Item": "Item"
,"Cat": "Cat"
,"S1": "Med"
,"Color": "Cor"
,"Origin": "Origem"
,"Price": "Preço"
,"Disc": "Desc"
,"Subtotal": "Sub-total"
,"OrderItemsUpdated": "Seu pedido leva muito tiempo aberto foi atualizado, os preços ou quantidades de seus ítens podem haver modificado"
,"RememberReconfiguringImpact": "Lembre-se que si voltas a configurar o pedido os preços ou quantidades de ítens poderíam modificar"
}

View File

@ -0,0 +1,49 @@
{
"Catalog": "Catálogo"
,"SearchResults": "Resultados de busca"
,"SelectFamily": "Seleccione uma família"
,"Select filter from right menu": "Seleccione um filtro no menú da direita"
,"ArticleNotFound": "Ítem não encontrado"
,"ArticleNotAvailable": "Ítem não disponível"
,"Switch view": "Modificar vista"
,"StartOrder": "Iniciar pedido"
,"ShoppingBasket": "Cesta da compra"
,"Search": "Buscar"
,"Order by": "Organizar"
,"Available": "Disponível"
,"Size": "Medida"
,"Realm": "Reino"
,"Family": "Família"
,"Color": "Cor"
,"Producer": "Produtor"
,"Origin": "Orígem"
,"Category": "Categoria"
,"Remove filters": "Eliminar filtros"
,"Amount": "Qtde"
,"Aval": "Disp"
,"Name": "Nome"
,"S1": "Med"
,"S2": "S2"
,"Stems": "Talos"
,"Cat": "Cat"
,"Pack": "Pack"
,"Origin": "Orígem"
,"Price": "Preço"
,"%.0d Units": "%.0d Unidades "
,"from": "desde"
,"from %.2d€": "desde %.2d€"
,"AddToBasket": "Adicionar à Cesta"
,"Add": "Adicionar"
,"Erase": "Eliminar"
,"Confirm": "Confirmar"
,"IndicativePhotos": "* As Fotos São Orientativas"
,"Added%dOf%s": "Adicionados %d de %s"
,"NoMoreAmountAvailable": "Não há mais quantidade disponível"
}

View File

@ -0,0 +1,31 @@
{
"ConfigureOrder": "Configurar pedido"
,"Cancel": "Cancelar"
,"Next": "Seguir"
,"DeliveryOrPickupQuestion": "Queres receber ou recolher o pedido?"
,"ReceiveThroughtAgency": "Receber por agência"
,"ReceiveThroughtRoute": "Transporte Verdnatura"
,"PickupInStore": "Recolher no armazém"
,"OrderDateDeliveryQuestion": "Que dia queres receber o pedido?"
,"OrderDatePickupQuestion": "Que dia queres recolher o pedido?"
,"AddressQuestion": "Onde queres receber o pedido?"
,"AgencyQuestion": "Por que agência queres receber o pedido?"
,"PickupWarehouseQuestion": "Em que armazém queres recolher o pedido?"
,"ConfirmToAccessCatalog": "Confirme os dados para entrar no catálogo"
,"Arrival": "Chegada"
,"Pickup": "Recolhida"
,"%A, %e of %B": "%A, %e de %B"
,"Agency": "Agência"
,"Warehouse": "Armazém"
,"Confirm": "Confirmar"
,"OrderStarted": "Pedido iniciado"
,"OrderUpdated": "Pedido atualizado"
,"NoAgeciesAvailableForDate": "Não há agências disponíveis para a data e o consignatario seleccionado, modifique a data de envío do pedido"
,"NoWarehousesAvailableForDate": "Não há armazéns disponíveis pa a data seleccionada, modifique a data de recolhida do pedido"
}

View File

@ -0,0 +1,25 @@
{
"Checkout": "Finalizar pedido"
,"OrderSummary": "Resumo do pedido"
,"Arrival": "Chegada"
,"%A, %e of %B": "%A, %e de %B"
,"Agency": "Agência"
,"Warehouse": "Armazém"
,"DeliveryAddress": "Endereço de envío"
,"Import": "Importe"
,"TaxBase": "Base tributável"
,"VAT": "IVA"
,"Total": "Total"
,"Cancel": "Cancelar"
,"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."
,"Accept": "Aceitar"
,"PayNow": "Pagar agora"
}

View File

@ -0,0 +1,8 @@
{
"Invoices": "Factura"
,"Serial": "Serie"
,"Date": "Data"
,"Import": "Importe"
,"Download PDF": "Descarregar PDF"
}

View File

@ -0,0 +1,36 @@
{
"OpenOrders": "Pedidos abertos"
,"StartOrder": "Iniciar pedido"
,"ContinueOrder": "Continuar pedido"
,"OrderNumber": "Nº pedido"
,"DateMake": "Data de criação"
,"DateExit": "Data de saída"
,"SendMethod": "Forma de envío"
,"LastOrders": "Últimos pedidos"
,"Balance:": "Saldo:"
,"PaymentInfo": "A quantidade mostrada é seu saldo pendente (negativo) ou favorável a dia de hoje, não se vincula a pedidos futuros. Para que seu pedido seja enviado, esta quantidade deve ser igual ou superior a 0. Se queres realizar um depósito à conta, apague a quantidade sugerida e introduza a quantidade que deseje."
,"MakePayment": "Realizar pagamento"
,"Company": "Empresa"
,"Pending": "Pendente"
,"Pay": "Pagar"
,"Basket": "Cesta"
,"ShoppingBasket": "Cesta da compra"
,"SeeOrder": "Mostrar detalhe do pedido"
,"TicketNumber": "Nº ticket"
,"SentAddress": "Endereço de envío"
,"Consignee": "Consignatario"
,"Boxes": "Bultos"
,"TotalWithVAT": "Total com IVA"
,"Pending": "Pendente"
,"PayOrder": "Pagar pedido"
,"AmountToPay:": "Quantidade a pagar (€):"
,"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"
}

View File

@ -0,0 +1,30 @@
{
"OrderDetail": "Detalhe do pedido"
,"Print delivery note": "Imprimir guía de remessa"
,"TicketNumber:": "Nº ticket:"
,"DateExit:": "Data de envío:"
,"SendMethod:": "Forma de envío:"
,"Notes:": "Notas:"
,"TicketTotal:": "Total pedido:"
,"(VATIncluded)": "(IVA incluído)"
,"PC": "Código postal"
,"City": "Município"
,"Province": "Distrito"
,"Address": "Endereço"
,"Consignee": "Consignatario"
,"ItemNumber": "Nº artículo"
,"Amount": "Qtde"
,"Item": "Ítem"
,"Category": "Categoría"
,"S1": "Med"
,"Stems": "Talos"
,"Color": "Cor"
,"Origin": "Orígem"
,"Price": "Preço"
,"Disc": "Desc"
,"Subtotal": "Sub-total"
}

View File

@ -0,0 +1,12 @@
{
"AddEditNew": "Adicionar ou editar notícia"
,"Title": "Título"
,"NewBody": "Corpo"
,"Tag": "Etiqueta"
,"Return": "Voltar"
,"Accept": "Aceitar"
,"NewChangedSuccessfully": "Noticia modificada corretamente"
}

View File

@ -0,0 +1,12 @@
{
"NewsManagement": "Gestão de noticias"
,"AddNew": "Adicionar noticia"
,"EditNew": "Editar noticia"
,"NewNum": "Nº noticia"
,"Date": "Data"
,"Author": "Autor"
,"Title": "Título"
,"Priority": "Prioridade"
}

8
web/locale/pt/js/db.js Normal file
View File

@ -0,0 +1,8 @@
Vn.Locale.add
({
"ConnError": "Erro de conexão"
,"BadServerReply": "Resposta do servidor incorreta"
,"ModelNotUpdatable": "Este modelo não é actualizável"
,"RowNotExists": "O Registro não existe ou foi apagado"
,"ColNotExists": "A Coluna não existe"
});

View File

@ -0,0 +1,57 @@
Vn.Locale.add
({
"User": "Usuario"
,"Password": "Palavra-Passe"
,"Beta": "Beta"
,"Do not sign out": "Não finalizar Sessão"
,"I want to know more": "Quero saber mais..."
,"Enter": "Entrar"
,"Login mail": "clientes@verdnatura.es"
,"Login phone": "+34 963 242 100"
,"You've been too idle": "Muito tempo de inatividade, a sessão foi finalizada"
,"Invalid login": "Usuário ou Palavra-Passe incorreto. Lembre-se de diferenciar maiusculas e minusculas."
,"There was an internal error": "Houve um erro interno"
,"Menu": "Menú"
,"Exit": "Sair"
,"Test the new website": "Prove a nova pagina web"
,"Old website": "Web antiga"
,"Recent changes": "Modificações recentes"
,"Print": "Imprimir"
,"Please unlock popups and try again":
"Por favor, desbloqueie os pop-ups e volte a tentar"
,"Error loading form": "Erro ao carregar formulario"
,"Error loading report": "Erro ao carregar o informe"
,"By using this site you accept cookies": "Ao utilizar esta pagina web, aceitar o uso de cookies para a personalização de conteúdos e análise."
,"New version available": "Existe uma nova atualização, a página se atualizará automaticamente para descarregar-la"
,"AppName": "VerdNatura"
,"Home": "Principio"
,"Orders": "Pedidos"
,"Basket": "Cesta"
,"Last orders": "Últimos pedidos"
,"Invoices": "Facturas"
,"Catalog": "Catálogo"
,"About": "Conheça-nos"
,"About us": "Sobre a gente"
,"Why": "Por quê?"
,"Location": "Localização"
,"Administration": "Administração"
,"Control panel": "Painel de controle"
,"Users": "Usuarios"
,"Visits": "Visitas"
,"News": "Noticias"
,"Photos": "Fotos"
,"Shelves": "Estantes"
,"Items list": "Lista de Itens"
,"Contact": "Quero ser cliente"
,"Training": "Formação"
,"Agencies": "Agências"
,"Configuration": "Configuração"
,"Account": "Conta"
,"Addresses": "Endereços"
});

31
web/locale/pt/js/htk.js Normal file
View File

@ -0,0 +1,31 @@
Vn.Locale.add
({
"True": "Sim"
,"False": "Não"
,"Null": "Nulo"
,"ChangeDate": "Modificar Data"
,"Sort": "Organizar"
,"At": "às"
,"Of": "de"
,"OfThe": "de"
,"Remove": "Eliminar"
,"Loading": "Carregando"
,"Loading...": "Carregando..."
,"ReallyDelete": "Tens certeza que queres apagar esta linha?"
,"YouMustBeLoggedIn": "Deves estar registrado como usuario"
,"EmptyList": "Lista vazia"
,"NoData": "Sem dados"
,"ErrorLoadingData": "Erro"
,"Error": "Erro"
,"Image": "Imagem"
,"File": "Arquivo"
,"FileName": "Nome"
,"UpdateImage": "Adicionar ou atualizar imagem"
,"UploadFile": "Subir arquivo"
,"ImageAdded": "Imagen adicionada corretamente"
,"Close": "Fechar"
,"Previous": "Anterior"
,"Next": "Seguinte"
,"Search": "Procurar"
,"Search...": "Procurar..."
});

44
web/locale/pt/js/vn.js Normal file
View File

@ -0,0 +1,44 @@
Vn.Locale.add
({
"Sunday": "Domingo"
,"Monday": "Segunda-Feira"
,"Tuesday": "Terça-Feira"
,"Wednesday": "Quarta-Feira"
,"Thursday": "Quinta-Feira"
,"Friday": "Sexta-Feira"
,"Saturday": "Sábado"
,"Su": "Do"
,"Mo": "Seg"
,"Tu": "Ter"
,"We": "Qua"
,"Th": "Qui"
,"Fr": "Sex"
,"Sa": "Sab"
,"January": "Janeiro"
,"February": "Fevereiro"
,"March": "Março"
,"April": "Abril"
,"May": "Maio"
,"June": "Junho"
,"July": "Julho"
,"August": "Agosto"
,"September": "Septembro"
,"October": "Outubro"
,"November": "Novembro"
,"December": "Dezembro"
,"Jan": "Jan"
,"Feb": "Fev"
,"Mar": "Mar"
,"Apr": "Abr"
,"May": "Mai"
,"Jun": "Jun"
,"Jul": "Jul"
,"Ago": "Ago"
,"Sep": "Set"
,"Oct": "Out"
,"Nov": "Nov"
,"Dec": "Dez"
});

View File

@ -0,0 +1,4 @@
{
"PaymentComplete": "Pagamento terminado, já podes voltar a nossa página web."
,"ReturnToWeb": "Voltar a Verdnatura"
}

View File

@ -0,0 +1,4 @@
{
"UpdateYourBrowser": "Atualiza seu navegador"
,"ContinueAnyway": "Continuar de todas maneiras"
}

View File

@ -0,0 +1,8 @@
{
"Welcome to Verdnatura, where are you going?": "Bem-Vindo a VerdNatura, onde queres ir?"
,"New website": "Nova Web"
,"(Fantastic)": "(Fantástica)"
,"Old website": "Antiga web"
,"(Best choose new)": "(Melhor escolher a nova)"
}

View File

@ -0,0 +1,5 @@
{
"InvalidAction": "Ação Inválida"
,"EmptyQuery": "Consulta vazía"
}

View File

@ -6,40 +6,28 @@
{
height: auto;
}
h1
h2
{
font-weight: normal;
font-size: 200%;
text-align: center;
margin: 0 auto;
font-size: 1.2em;
margin-bottom: 8mm;
font-weight: bold;
}
.htk-grid
.header
{
border-collapse: collapse;
width: 100%;
margin: 0 auto;
padding: 0;
margin-bottom: 2em;
}
thead > tr
.header > p
{
border-bottom: 1px solid #333;
height: 10mm;
text-align: right;
margin: .1em 0;
}
th
.footer
{
font-weight: normal;
}
td
{
padding-left: 2mm;
}
tbody > tr
{
height: 18mm;
}
.cell-image > img
{
width: 15mm;
font-size: 1.2em;
font-weight: bold;
margin-top: .2em;
border-top: 1px solid #333;
padding-top: .3em;
text-align: right;
}

View File

@ -15,59 +15,28 @@
</db-form>
</vn-group>
<div id="report" class="sheet">
<table class="form">
<tbody>
<tr>
<td class="label">
<label><t>TicketNumber:</t></label>
</td>
<td>
<htk-text column="id" form="ticket"/>
</td>
</tr>
<tr>
<td class="label">
<label><t>DateExit:</t></label>
</td>
<td>
<htk-date-chooser column="date" form="ticket" editable="false"/>
</td>
</tr>
<tr>
<td class="label">
<label><t>SendMethod:</t></label>
</td>
<td>
<htk-text column="Agencia" form="ticket"/>
</td>
</tr>
<tr>
<td class="label">
<label><t>Notes:</t></label>
</td>
<td>
<htk-text column="note" form="ticket"/>
</td>
</tr>
<tr>
<td class="label">
<label for="total"><t>Subtotal:</t></label>
</td>
<td>
<htk-text format="%.2d€">
<db-calc-sum func="subtotal" model="movements"/>
</htk-text>
</td>
</tr>
</tbody>
</table>
<htk-grid model="ticket-data">
<htk-column-spin title="_PC" column="zip_code"/>
<htk-column-text title="_City" column="city"/>
<htk-column-text title="_Province" column="province"/>
<htk-column-text title="_Address" column="name"/>
<htk-column-text title="_Consignee" column="consignee"/>
</htk-grid>
<h2>
<htk-text column="id" form="ticket"/>
</h2>
<div class="header">
<p>
<htk-text form="ticket" column="consignee"/>
</p>
<p>
<htk-text form="ticket" column="date" format="%A, %e of %B %Y"/>
</p>
<p>
<htk-text form="ticket" column="name"/>
</p>
<p>
<htk-text form="ticket" column="zip_code"/>
<htk-text form="ticket" column="city"/>
(<htk-text form="ticket" column="province"/>)
</p>
<p>
<t>Delivery</t> <htk-text form="ticket" column="Agencia"/>
</p>
</div>
<htk-grid>
<db-model property="model" id="movements" conn="conn" batch="batch">
<custom>
@ -81,17 +50,18 @@
ORDER BY concept
</custom>
</db-model>
<htk-column-spin title="_ItemNumber" column="item_id"/>
<htk-column-spin title="_Ref" column="item_id"/>
<htk-column-spin title="_Amount" column="amount"/>
<htk-column-text title="_Item" column="concept"/>
<htk-column-text title="_Category" column="Categoria"/>
<htk-column-text title="_S1" column="Medida"/>
<htk-column-text title="_Stems" column="Tallos"/>
<htk-column-text title="_Color" column="Color"/>
<htk-column-text title="_Origin" column="Abreviatura"/>
<htk-column-text title="_Cat" column="Categoria"/>
<htk-column-spin title="_Price" column="price" unit="€" digits="2"/>
<htk-column-spin title="_Desc" column="discount" unit="%"/>
<htk-column-spin title="_Subtotal" unit="€" digits="2" renderer="subtotalRenderer"/>
</htk-grid>
<p class="footer">
<htk-text format="%.2d€">
<db-calc-sum property="param" func="subtotal" model="movements"/>
</htk-text>
</p>
</div>
</vn>