Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into dev
This commit is contained in:
commit
2bf9244770
|
@ -38,7 +38,7 @@
|
|||
"Vehicle": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
"UserTableConfiguration": {
|
||||
"UserConfigView": {
|
||||
"dataSource": "vn"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "UserTableConfiguration",
|
||||
"name": "UserConfigView",
|
||||
"base": "VnModel",
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "salix.userTableConfiguration"
|
||||
"table": "salix.userConfigView"
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
|
@ -21,10 +21,10 @@
|
|||
}
|
||||
},
|
||||
"relations": {
|
||||
"worker": {
|
||||
"user": {
|
||||
"type": "belongsTo",
|
||||
"model": "Worker",
|
||||
"foreignKey": "workerFk"
|
||||
"model": "Account",
|
||||
"foreignKey": "userFk"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -164,7 +164,7 @@ export default {
|
|||
newPaymentButton: `${components.vnFloatButton}`,
|
||||
newPaymentBankInut: `vn-client-risk-create vn-textfield[field="$ctrl.receipt.bankFk"] input`,
|
||||
newPaymentAmountInput: `vn-client-risk-create vn-textfield[field="$ctrl.receipt.amountPaid"] input`,
|
||||
saveButton: `${components.vnSubmit}`,
|
||||
saveButton: `vn-client-risk-create vn-button[label="Save"]`,
|
||||
firstRiskLineBalance: 'vn-client-risk-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)'
|
||||
|
||||
},
|
||||
|
|
|
@ -47,9 +47,6 @@ export default class Dialog extends Component {
|
|||
|
||||
if (this.onOpen)
|
||||
this.onOpen();
|
||||
|
||||
let firstFocusable = this.element.querySelector('input, textarea');
|
||||
if (firstFocusable) firstFocusable.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -13,3 +13,4 @@ import './effects.scss';
|
|||
import './order-product.scss';
|
||||
import './summary.scss';
|
||||
import './descriptor.scss';
|
||||
import './modal-form.scss';
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
@import 'colors';
|
||||
@import "./padding";
|
||||
|
||||
vn-dialog.modal-form {
|
||||
vn-horizontal.header{
|
||||
@extend .pad-small;
|
||||
background-color: $main-01;
|
||||
h5{
|
||||
color: white;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
tpl-body {
|
||||
width: 100%;
|
||||
}
|
||||
table {
|
||||
width: 100%
|
||||
}
|
||||
& > div{
|
||||
padding: 0!important;
|
||||
}
|
||||
vn-textfield {
|
||||
width: 100%;
|
||||
}
|
||||
.buttons{
|
||||
margin-top: 0!important;
|
||||
}
|
||||
|
||||
p{
|
||||
display: none;
|
||||
}
|
||||
button.close > vn-icon{
|
||||
color: white!important;
|
||||
}
|
||||
vn-ticket-sale-edit-discount > div {
|
||||
padding-bottom: 0!important;
|
||||
}
|
||||
}
|
|
@ -1,44 +1,45 @@
|
|||
<mg-ajax path="/client/api/receipts" options="vnPost"></mg-ajax>
|
||||
<vn-watcher
|
||||
vn-id="watcher"
|
||||
data="$ctrl.receipt"
|
||||
form="form"
|
||||
save="post">
|
||||
</vn-watcher>
|
||||
<form name="form" ng-submit="$ctrl.onSubmit()" compact>
|
||||
<vn-card pad-large>
|
||||
<vn-horizontal>
|
||||
<vn-date-picker vn-one
|
||||
label="Date"
|
||||
model="$ctrl.receipt.payed"
|
||||
ini-options="{dateFormat: 'd-m-Y', time_24hr: true}">
|
||||
</vn-date-picker>
|
||||
<vn-autocomplete vn-one
|
||||
url="/api/Companies"
|
||||
label="Company"
|
||||
show-field="code"
|
||||
value-field="id"
|
||||
field="$ctrl.receipt.companyFk">
|
||||
</vn-autocomplete>
|
||||
<vn-dialog
|
||||
vn-id="dialog"
|
||||
class="modal-form">
|
||||
<tpl-body>
|
||||
<mg-ajax path="/client/api/receipts" options="vnPost"></mg-ajax>
|
||||
<vn-horizontal class="header">
|
||||
<h5><span translate>New payment</span></h5>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
margin-medium-right
|
||||
label="Bank"
|
||||
field="$ctrl.receipt.bankFk">
|
||||
</vn-textfield>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
margin-medium-right
|
||||
label="Amount"
|
||||
field="$ctrl.receipt.amountPaid"
|
||||
vn-focus>
|
||||
</vn-textfield>
|
||||
<div pad-medium>
|
||||
<vn-horizontal>
|
||||
<vn-date-picker vn-one
|
||||
label="Date"
|
||||
model="$ctrl.receipt.payed"
|
||||
ini-options="{dateFormat: 'd-m-Y', time_24hr: true}">
|
||||
</vn-date-picker>
|
||||
<vn-autocomplete vn-one
|
||||
url="/api/Companies"
|
||||
label="Company"
|
||||
show-field="code"
|
||||
value-field="id"
|
||||
field="$ctrl.receipt.companyFk">
|
||||
</vn-autocomplete>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
margin-medium-right
|
||||
label="Bank"
|
||||
field="$ctrl.receipt.bankFk">
|
||||
</vn-textfield>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
margin-medium-right
|
||||
label="Amount"
|
||||
field="$ctrl.receipt.amountPaid"
|
||||
vn-focus>
|
||||
</vn-textfield>
|
||||
</vn-horizontal>
|
||||
</div>
|
||||
<vn-horizontal margin-medium class="buttons-bar">
|
||||
<vn-button vn-one label="Save" ng-click="$ctrl.save()"></vn-button>
|
||||
<vn-button vn-one ng-click="$ctrl.hide()" label="Cancel"></vn-button>
|
||||
</vn-horizontal>
|
||||
</vn-card>
|
||||
<vn-button-bar>
|
||||
<vn-submit label="Save"></vn-submit>
|
||||
<vn-button ng-click="$ctrl.cancel($event)" label="Cancel"></vn-button>
|
||||
</vn-button-bar>
|
||||
</form>
|
||||
</tpl-body>
|
||||
</vn-dialog>
|
|
@ -1,11 +1,13 @@
|
|||
import ngModule from '../../module';
|
||||
import './style.scss';
|
||||
|
||||
class Controller {
|
||||
constructor($scope, $state, $http, $stateParams) {
|
||||
constructor($scope, $state, $http, vnApp, $translate) {
|
||||
this.$http = $http;
|
||||
this.$ = $scope;
|
||||
this.$state = $state;
|
||||
this.$stateParams = $stateParams;
|
||||
this.vnApp = vnApp;
|
||||
this.$translate = $translate;
|
||||
|
||||
this.receipt = {
|
||||
payed: new Date(),
|
||||
|
@ -13,21 +15,26 @@ class Controller {
|
|||
companyFk: window.localStorage.defaultCompanyFk,
|
||||
bankFk: window.localStorage.defaultBankFk
|
||||
};
|
||||
|
||||
if (this.$stateParams.payed)
|
||||
this.receipt.payed = this.$stateParams.payed;
|
||||
|
||||
if (this.$stateParams.bankFk)
|
||||
this.receipt.bankFk = this.$stateParams.bankFk;
|
||||
|
||||
if (this.$stateParams.amountPaid)
|
||||
this.receipt.amountPaid = this.$stateParams.amountPaid;
|
||||
|
||||
if (this.$stateParams.companyFk)
|
||||
this.receipt.companyFk = this.$stateParams.companyFk;
|
||||
}
|
||||
|
||||
$onInit() {
|
||||
set payed(value) {
|
||||
this.receipt.payed = value;
|
||||
}
|
||||
|
||||
set bankFk(value) {
|
||||
this.receipt.bankFk = value;
|
||||
}
|
||||
|
||||
set amountPaid(value) {
|
||||
this.receipt.amountPaid = value;
|
||||
}
|
||||
|
||||
set companyFk(value) {
|
||||
this.receipt.companyFk = value;
|
||||
this.getAmountPaid();
|
||||
}
|
||||
|
||||
getAmountPaid() {
|
||||
let filter = {
|
||||
where: {
|
||||
clientFk: this.$state.params.id,
|
||||
|
@ -41,25 +48,34 @@ class Controller {
|
|||
});
|
||||
}
|
||||
|
||||
cancel() {
|
||||
this.goToIndex();
|
||||
show() {
|
||||
this.$.dialog.show();
|
||||
}
|
||||
|
||||
goToIndex() {
|
||||
this.$state.go('client.card.risk.index');
|
||||
hide() {
|
||||
this.$.dialog.hide();
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
this.$.watcher.submit().then(
|
||||
() => {
|
||||
this.goToIndex();
|
||||
}
|
||||
);
|
||||
save() {
|
||||
let query = `/client/api/receipts`;
|
||||
this.$http.post(query, this.receipt).then(() => {
|
||||
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
|
||||
this.hide();
|
||||
if (this.onResponse)
|
||||
this.onResponse();
|
||||
});
|
||||
}
|
||||
}
|
||||
Controller.$inject = ['$scope', '$state', '$http', '$stateParams'];
|
||||
Controller.$inject = ['$scope', '$state', '$http', 'vnApp', '$translate'];
|
||||
|
||||
ngModule.component('vnClientRiskCreate', {
|
||||
template: require('./index.html'),
|
||||
controller: Controller
|
||||
controller: Controller,
|
||||
bindings: {
|
||||
payed: '<?',
|
||||
bankFk: '<?',
|
||||
amountPaid: '<?',
|
||||
onResponse: '&?',
|
||||
companyFk: '<?'
|
||||
}
|
||||
});
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
vn-horizontal.buttons-bar{
|
||||
text-align: center;
|
||||
}
|
|
@ -94,13 +94,16 @@
|
|||
<vn-pagination model="model"></vn-pagination>
|
||||
</vn-card>
|
||||
</vn-vertical>
|
||||
<a ui-sref="client.card.risk.create"
|
||||
|
||||
<vn-float-button
|
||||
vn-acl="administrative"
|
||||
vn-acl-action="remove"
|
||||
icon="add"
|
||||
vn-tooltip="New payment"
|
||||
vn-bind="+"
|
||||
fixed-bottom-right>
|
||||
<vn-float-button
|
||||
vn-acl="administrative"
|
||||
vn-acl-action="remove"
|
||||
icon="add">
|
||||
</vn-float-button>
|
||||
</a>
|
||||
fixed-bottom-right
|
||||
ng-click="$ctrl.openCreateDialog()">
|
||||
</vn-float-button>
|
||||
|
||||
<vn-client-risk-create vn-id="riskCreateDialog">
|
||||
</vn-client-risk-create>
|
|
@ -31,6 +31,9 @@ class Controller {
|
|||
setOrder(value) {
|
||||
this.params.params.companyFk = value;
|
||||
this.filter.where.companyFk = value;
|
||||
}
|
||||
|
||||
refresh() {
|
||||
this.$.model.refresh();
|
||||
this.$.riskModel.refresh();
|
||||
}
|
||||
|
@ -55,6 +58,14 @@ class Controller {
|
|||
return this._risks;
|
||||
}
|
||||
|
||||
openCreateDialog() {
|
||||
this.$.riskCreateDialog.companyFk = this.companyFk;
|
||||
this.$.riskCreateDialog.onResponse = () => {
|
||||
this.refresh();
|
||||
};
|
||||
this.$.riskCreateDialog.show();
|
||||
}
|
||||
|
||||
onDownload() {
|
||||
alert('Not implemented yet');
|
||||
}
|
||||
|
|
|
@ -5,7 +5,32 @@ vn-client-sample-create {
|
|||
}
|
||||
|
||||
tpl-body {
|
||||
min-width: 800px
|
||||
min-width: 800px;
|
||||
|
||||
.container, .container h1 {
|
||||
font-family: "Roboto","Helvetica","Arial",sans-serif;
|
||||
font-size: 1em !important;
|
||||
|
||||
h1 {
|
||||
font-weight: bold;
|
||||
margin: auto
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 1em 0
|
||||
}
|
||||
|
||||
footer p {
|
||||
font-size: 10px !important;
|
||||
line-height: 10px
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.title h1 {
|
||||
font-size: 2em !important;
|
||||
margin: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -46,7 +46,7 @@
|
|||
<div class="attributes">
|
||||
<h5>{{$ctrl.item.id}}</h5>
|
||||
<vn-label-value label="Name"
|
||||
value="{{::$ctrl.item.name}}">
|
||||
value="{{$ctrl.item.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value label="Buyer"
|
||||
value="{{$ctrl.item.itemType.worker.user.nickname}}">
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<vn-tr ng-repeat="entry in entries">
|
||||
<vn-td number>
|
||||
<vn-check
|
||||
field="entries.isIgnored"
|
||||
field="entry.isIgnored"
|
||||
disabled="true">
|
||||
</vn-check>
|
||||
</vn-td>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
value="{{$ctrl.summary.item.origin.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value label="stems"
|
||||
value="{{$ctrl.summary.item.origin.stems}}">
|
||||
value="{{$ctrl.summary.item.stems}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value label="Buyer"
|
||||
value="{{$ctrl.summary.item.itemType.worker.user.nickname}}">
|
||||
|
|
|
@ -67,6 +67,7 @@ class Controller {
|
|||
this.$scope.model.save().then(() => {
|
||||
this.$scope.watcher.notifySaved();
|
||||
this.$scope.model.refresh();
|
||||
this.card.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -75,5 +76,8 @@ Controller.$inject = ['$stateParams', '$scope'];
|
|||
|
||||
ngModule.component('vnItemTags', {
|
||||
template: require('./index.html'),
|
||||
controller: Controller
|
||||
controller: Controller,
|
||||
require: {
|
||||
card: '^vnItemCard'
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import ngModule from '../module';
|
||||
import './style.scss';
|
||||
|
||||
class Controller {
|
||||
constructor($state, $scope, $http, vnApp, $translate) {
|
||||
|
|
|
@ -37,7 +37,7 @@ module.exports = Self => {
|
|||
},
|
||||
});
|
||||
|
||||
Self.catalogFilter = async (orderFk, orderBy, filter, tags) => {
|
||||
Self.catalogFilter = async(orderFk, orderBy, filter, tags) => {
|
||||
let conn = Self.dataSource.connector;
|
||||
const stmts = [];
|
||||
let stmt;
|
||||
|
|
|
@ -19,9 +19,7 @@
|
|||
</vn-one>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal class="input">
|
||||
<vn-autocomplete
|
||||
vn-one
|
||||
vn-id="type"
|
||||
<vn-autocomplete vn-id="type" vn-one
|
||||
data="$ctrl.itemTypes"
|
||||
on-change="$ctrl.type = {
|
||||
id: value,
|
||||
|
|
|
@ -18,6 +18,11 @@ class Controller {
|
|||
return this._order;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets filter values from state params
|
||||
*
|
||||
* @param {Object} value - Order data
|
||||
*/
|
||||
set order(value) {
|
||||
if (!value.id || this._order) return;
|
||||
|
||||
|
@ -49,20 +54,18 @@ class Controller {
|
|||
this.itemTypes = [];
|
||||
this.type = null;
|
||||
|
||||
if (!value || (this.category && this.category.id == value.id)) {
|
||||
if (!value || (this.category && this.category.id == value.id))
|
||||
this._category = null;
|
||||
this.updateStateParams();
|
||||
else
|
||||
this._category = value;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this._category = value;
|
||||
this.updateStateParams();
|
||||
|
||||
const query = `/item/api/ItemCategories/${value.id}/itemTypes`;
|
||||
this.$http.get(query).then(res => {
|
||||
this.itemTypes = res.data;
|
||||
});
|
||||
if (this.tags.length > 0)
|
||||
this.applyFilters();
|
||||
|
||||
if (value)
|
||||
this.updateItemTypes();
|
||||
}
|
||||
|
||||
get type() {
|
||||
|
@ -83,6 +86,16 @@ class Controller {
|
|||
this.applyFilters();
|
||||
}
|
||||
|
||||
/**
|
||||
* Refreshes item type dropdown data
|
||||
*/
|
||||
updateItemTypes() {
|
||||
const query = `/item/api/ItemCategories/${this.category.id}/itemTypes`;
|
||||
this.$http.get(query).then(res => {
|
||||
this.itemTypes = res.data;
|
||||
});
|
||||
}
|
||||
|
||||
onSearch(event) {
|
||||
if (event.key !== 'Enter') return;
|
||||
this.tags.push({
|
||||
|
@ -145,6 +158,9 @@ class Controller {
|
|||
this.$panel = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates url state params from filter values
|
||||
*/
|
||||
updateStateParams() {
|
||||
const params = {};
|
||||
|
||||
|
|
|
@ -42,4 +42,8 @@ vn-catalog-filter > div {
|
|||
flex-wrap: wrap;
|
||||
padding: $pad-medium;
|
||||
}
|
||||
|
||||
vn-autocomplete[vn-id="type"] .list {
|
||||
max-height: 20em
|
||||
}
|
||||
}
|
|
@ -27,6 +27,9 @@
|
|||
},
|
||||
"checked": {
|
||||
"type": "Number"
|
||||
},
|
||||
"externalId": {
|
||||
"type": "Number"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
|
|
|
@ -16,8 +16,10 @@
|
|||
label="Address"
|
||||
show-field="nickname"
|
||||
value-field="id"
|
||||
field="$ctrl.ticket.addressFk">
|
||||
<tpl-item>{{::nickname}}
|
||||
field="$ctrl.ticket.addressFk"
|
||||
order="isActive DESC">
|
||||
<tpl-item ng-class="::{notActive: isActive === false}">
|
||||
<span class="inactive" translate>{{::isActive ? '' : 'INACTIVE'}}</span> {{::nickname}}
|
||||
<span ng-show="city || province || street">- {{::street}} - {{::city}} - {{::province.name}} - {{::agencyMode.name}}</span>
|
||||
</tpl-item>
|
||||
</vn-autocomplete>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import ngModule from '../../module';
|
||||
import {toJsonDate} from 'core/lib/date';
|
||||
import './style.scss';
|
||||
|
||||
class Controller {
|
||||
constructor($scope, $http, $translate, vnApp) {
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
@import 'colors';
|
||||
|
||||
tpl-item{
|
||||
&.notActive {
|
||||
background-color: $main-bg;
|
||||
color: $secondary-font-color;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
& > .inactive {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
url="/ticket/api/Tickets/filter"
|
||||
limit="20"
|
||||
data="tickets"
|
||||
order="shipped ASC"
|
||||
order="shipped DESC"
|
||||
auto-load="false">
|
||||
</vn-crud-model>
|
||||
<div class="content-block">
|
||||
|
@ -74,7 +74,12 @@
|
|||
<vn-td>{{::ticket.agencyMode}}</vn-td>
|
||||
<vn-td>{{::ticket.warehouse}}</vn-td>
|
||||
<vn-td number>{{::ticket.total | currency: 'EUR': 2}}</vn-td>
|
||||
<vn-td>
|
||||
<vn-td number>
|
||||
<vn-icon-button
|
||||
ng-click="$ctrl.goToLines(ticket.id)"
|
||||
vn-tooltip="Preview"
|
||||
icon="icon-lines">
|
||||
</vn-icon-button>
|
||||
<vn-icon-button
|
||||
ng-click="$ctrl.preview($event, ticket)"
|
||||
vn-tooltip="Preview"
|
||||
|
|
|
@ -8,7 +8,9 @@ export default class Controller {
|
|||
this.$state = $state;
|
||||
this.selectedTicket = null;
|
||||
this.moreOptions = [
|
||||
{callback: this.goToTurns, name: 'Turns', always: true},
|
||||
{callback: () => {
|
||||
this.goToTurns('ticket.weekly');
|
||||
}, name: 'Turns', always: true},
|
||||
];
|
||||
|
||||
if (!$stateParams.q) {
|
||||
|
@ -42,6 +44,10 @@ export default class Controller {
|
|||
this.$.model.clear();
|
||||
}
|
||||
|
||||
goToLines(ticketFk) {
|
||||
this.$state.go('ticket.card.lines', {id: ticketFk});
|
||||
}
|
||||
|
||||
goToTurns() {
|
||||
this.$state.go('ticket.weekly');
|
||||
}
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
<vn-pagination model="model"></vn-pagination>
|
||||
</vn-card>
|
||||
</vn-vertical>
|
||||
<a ui-sref="ticket.card.tracking.edit" vn-bind="+" vn-visible-by="production, administrative, salesperson" fixed-bottom-right>
|
||||
<a ui-sref="ticket.card.tracking.edit" vn-bind="+" fixed-bottom-right>
|
||||
<vn-float-button icon="add"></vn-float-button>
|
||||
</a>
|
|
@ -37,4 +37,4 @@ body {
|
|||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
.container {
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 16px;
|
||||
zoom: 0.55
|
||||
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.columns {
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
body {
|
||||
zoom: 0.55
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-bottom: 20px;
|
||||
font-weight: 100;
|
||||
margin-top: 0;
|
||||
font-size: 2em
|
||||
}
|
|
@ -11,6 +11,7 @@
|
|||
{"type": "report", "name": "rpt-claim-pickup-order"},
|
||||
{"type": "report", "name": "rpt-letter-debtor"},
|
||||
{"type": "report", "name": "rpt-sepa-core"},
|
||||
{"type": "report", "name": "rpt-informe"},
|
||||
{"type": "static", "name": "email-header"},
|
||||
{"type": "static", "name": "email-footer"},
|
||||
{"type": "static", "name": "report-header"},
|
||||
|
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
body {
|
||||
background-color: #EEE
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 600px;
|
||||
min-width: 320px;
|
||||
margin: 0 auto;
|
||||
color: #555
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: #FFF;
|
||||
padding: 20px
|
||||
}
|
||||
|
||||
.main a {
|
||||
color: #8dba25
|
||||
}
|
||||
|
||||
.main h1 {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.main h3 {
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #95d831;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
padding: 35px 0
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
|
@ -5,7 +5,9 @@
|
|||
</head>
|
||||
<body>
|
||||
<section class="container">
|
||||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
@ -26,7 +28,9 @@
|
|||
<p>{{$t('sections.howToBuy.stock')}}</p>
|
||||
<p>{{$t('sections.howToBuy.delivery')}}</p> -->
|
||||
</section>
|
||||
<!-- Footer component -->
|
||||
<email-footer :locale="locale"></email-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
body {
|
||||
background-color: #EEE
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 600px;
|
||||
min-width: 320px;
|
||||
margin: 0 auto;
|
||||
color: #555
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: #FFF;
|
||||
padding: 20px
|
||||
}
|
||||
|
||||
.main a {
|
||||
color: #8dba25
|
||||
}
|
||||
|
||||
.main h1 {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.main h3 {
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #95d831;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
padding: 35px 0
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
|
@ -5,7 +5,9 @@
|
|||
</head>
|
||||
<body>
|
||||
<section class="container">
|
||||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
@ -62,7 +64,9 @@
|
|||
</section>
|
||||
</p>
|
||||
</section>
|
||||
<!-- Footer component -->
|
||||
<email-footer :locale="locale"></email-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
body {
|
||||
background-color: #EEE
|
||||
}
|
||||
|
||||
.container {
|
||||
font-family: arial, sans-serif;
|
||||
max-width: 600px;
|
||||
min-width: 320px;
|
||||
font-size: 16px;
|
||||
margin: 0 auto;
|
||||
color: #555
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: #FFF;
|
||||
padding: 20px
|
||||
}
|
||||
|
||||
.main a {
|
||||
color: #8dba25
|
||||
}
|
||||
|
||||
.main h1 {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.main h3 {
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #95d831;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
padding: 35px 0
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
|
@ -8,7 +8,6 @@
|
|||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
body {
|
||||
background-color: #EEE
|
||||
}
|
||||
|
||||
.container {
|
||||
font-family: arial, sans-serif;
|
||||
max-width: 600px;
|
||||
min-width: 320px;
|
||||
font-size: 16px;
|
||||
margin: 0 auto;
|
||||
color: #555
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: #FFF;
|
||||
padding: 20px
|
||||
}
|
||||
|
||||
.main a {
|
||||
color: #8dba25
|
||||
}
|
||||
|
||||
.main h1 {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.main h3 {
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #95d831;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
padding: 35px 0
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
|
@ -8,7 +8,6 @@
|
|||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
body {
|
||||
background-color: #EEE
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 600px;
|
||||
min-width: 320px;
|
||||
margin: 0 auto;
|
||||
color: #555
|
||||
}
|
||||
.main {
|
||||
background-color: #FFF;
|
||||
padding: 20px
|
||||
}
|
||||
|
||||
.main a {
|
||||
color: #8dba25
|
||||
}
|
||||
|
||||
.main h1 {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.main h3 {
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #95d831;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
padding: 35px 0
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
|
@ -8,7 +8,6 @@
|
|||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
body {
|
||||
background-color: #EEE
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 600px;
|
||||
min-width: 320px;
|
||||
margin: 0 auto;
|
||||
color: #555
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: #FFF;
|
||||
padding: 20px
|
||||
}
|
||||
|
||||
.main a {
|
||||
color: #8dba25
|
||||
}
|
||||
|
||||
.main h1 {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.main h3 {
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: #95d831;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
padding: 35px 0
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 32px;
|
||||
color: #333;
|
||||
margin: 0
|
||||
}
|
|
@ -8,7 +8,6 @@
|
|||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
|
|
@ -2,6 +2,7 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${appPath}/common/css/report.css`,
|
||||
`${appPath}/common/css/misc.css`,
|
||||
`${__dirname}/style.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,14 +1,3 @@
|
|||
.container {
|
||||
color: #000
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: 100;
|
||||
margin-top: 0;
|
||||
margin-bottom: 20px;
|
||||
font-size: 2em
|
||||
}
|
||||
|
||||
table.column-oriented {
|
||||
margin-top: 50px !important
|
||||
}
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
<html lang="es">
|
||||
<body>
|
||||
<section class="container">
|
||||
<report-header></report-header>
|
||||
<!-- Header component -->
|
||||
<report-header :locale="locale"></report-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<section class="columns">
|
||||
<section class="size50">
|
||||
|
@ -72,12 +74,13 @@
|
|||
|
||||
<p v-html="$t('sections.agency.description')"></p>
|
||||
</section>
|
||||
|
||||
<!-- Footer component -->
|
||||
<report-footer id="pageFooter"
|
||||
:left-text="$t('claim', [claimId])"
|
||||
:center-text="clientName"
|
||||
:locale="locale">
|
||||
</report-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -2,6 +2,7 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${appPath}/common/css/report.css`,
|
||||
`${appPath}/common/css/misc.css`,
|
||||
`${__dirname}/style.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,14 +1,3 @@
|
|||
.container {
|
||||
color: #000
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: 100;
|
||||
margin-top: 0;
|
||||
margin-bottom: 20px;
|
||||
font-size: 2em
|
||||
}
|
||||
|
||||
table.column-oriented {
|
||||
margin-top: 50px !important
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<body>
|
||||
<section class="container">
|
||||
<report-header></report-header>
|
||||
<section class="container" id="report">
|
||||
<!-- Header component -->
|
||||
<report-header :locale="locale"></report-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<section class="columns">
|
||||
<section class="size50">
|
||||
|
@ -74,13 +76,21 @@
|
|||
</tr> -->
|
||||
</tfoot>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<div class="panel" style="text-align:center;background-color:red">
|
||||
<div class="header">Firma digital</div>
|
||||
<img width="200" src="http://windows.verdnatura.es/signatures/tickets/1161229.png"/>
|
||||
<section>{{dmsCreated}}</section>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Footer component -->
|
||||
<report-footer id="pageFooter"
|
||||
:left-text="$t('ticket', [clientId])"
|
||||
:left-text="$t('ticket', [ticketId])"
|
||||
:center-text="clientName"
|
||||
:locale="locale">
|
||||
</report-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -33,11 +33,17 @@ module.exports = {
|
|||
data() {
|
||||
return {totalBalance: 0.00};
|
||||
},
|
||||
computed: {
|
||||
dmsPath() {
|
||||
return `http://windows.verdnatura.es/signatures/tickets/1161229.png`;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fetchClient(ticketFk) {
|
||||
return database.pool.query(
|
||||
`SELECT
|
||||
c.id clientId,
|
||||
t.id ticketId,
|
||||
u.lang locale,
|
||||
c.email AS recipient,
|
||||
c.socialName AS clientName,
|
||||
|
@ -46,12 +52,16 @@ module.exports = {
|
|||
c.city,
|
||||
c.fi,
|
||||
p.name AS province,
|
||||
ct.country
|
||||
ct.country,
|
||||
dt.dmsFk,
|
||||
d.created AS dmsCreated
|
||||
FROM ticket t
|
||||
JOIN client c ON c.id = t.clientFk
|
||||
JOIN account.user u ON u.id = c.id
|
||||
JOIN country ct ON ct.id = c.countryFk
|
||||
LEFT JOIN province p ON p.id = c.provinceFk
|
||||
LEFT JOIN dmsTicket dt ON dt.ticketFk = t.id
|
||||
LEFT JOIN dms d ON d.id = dt.dmsFk
|
||||
WHERE t.id = ?`, [ticketFk]);
|
||||
},
|
||||
fetchSales(clientFk, companyFk) {
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
const CssReader = require(`${appPath}/lib/cssReader`);
|
||||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${appPath}/common/css/report.css`,
|
||||
`${appPath}/common/css/misc.css`,
|
||||
`${__dirname}/style.css`])
|
||||
.mergeStyles();
|
|
@ -0,0 +1,3 @@
|
|||
table.column-oriented {
|
||||
margin-top: 50px !important
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<body>
|
||||
<section class="container" id="report">
|
||||
<!-- Header component -->
|
||||
<report-header :locale="locale"></report-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<!-- Report start -->
|
||||
<h1 class="title">{{$t('title')}}</h1>
|
||||
<p>{{$t('date')}} {{dated()}}</p>
|
||||
<table class="column-oriented">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>{{$t('concept')}}</th>
|
||||
<th>{{$t('quantity')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="sale in sales" :key="sale.id">
|
||||
<td class="font gray">{{sale.id}}</td>
|
||||
<td>{{sale.concept}}</td>
|
||||
<td>{{sale.quantity}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Report end -->
|
||||
</section>
|
||||
<!-- Footer component -->
|
||||
<report-footer id="pageFooter"
|
||||
:left-text="$t('client', [client.id])"
|
||||
:center-text="client.name"
|
||||
:locale="locale">
|
||||
</report-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,32 @@
|
|||
const strftime = require('strftime');
|
||||
|
||||
module.exports = {
|
||||
name: 'rpt-informe',
|
||||
created() {
|
||||
if (this.locale)
|
||||
this.$i18n.locale = this.locale;
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
client: {
|
||||
id: 10252,
|
||||
name: 'Batman',
|
||||
},
|
||||
sales: [
|
||||
{id: 1, concept: 'My item 1', quantity: 25},
|
||||
{id: 2, concept: 'My item 2', quantity: 50},
|
||||
{id: 3, concept: 'My item 3', quantity: 150}
|
||||
],
|
||||
locale: 'es'
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
dated: () => {
|
||||
return strftime('%d-%m-%Y', new Date());
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'report-header': require('../report-header'),
|
||||
'report-footer': require('../report-footer'),
|
||||
},
|
||||
};
|
|
@ -0,0 +1,11 @@
|
|||
module.exports = {
|
||||
messages: {
|
||||
es: {
|
||||
title: 'Sample report',
|
||||
date: 'Fecha',
|
||||
quantity: 'Cantidad',
|
||||
concept: 'Concepto',
|
||||
client: 'Cliente {0}',
|
||||
},
|
||||
},
|
||||
};
|
|
@ -2,6 +2,7 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${appPath}/common/css/report.css`,
|
||||
`${appPath}/common/css/misc.css`,
|
||||
`${__dirname}/style.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,14 +1,3 @@
|
|||
.container {
|
||||
color: #000
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: 100;
|
||||
margin-top: 0;
|
||||
margin-bottom: 20px;
|
||||
font-size: 2em
|
||||
}
|
||||
|
||||
table.column-oriented {
|
||||
margin-top: 50px !important
|
||||
}
|
|
@ -2,7 +2,9 @@
|
|||
<html lang="es">
|
||||
<body>
|
||||
<section class="container">
|
||||
<report-header></report-header>
|
||||
<!-- Header component -->
|
||||
<report-header :locale="locale"></report-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<section class="columns">
|
||||
<section class="size50">
|
||||
|
@ -71,12 +73,13 @@
|
|||
</tfoot>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<!-- Footer component -->
|
||||
<report-footer id="pageFooter"
|
||||
:left-text="$t('client', [clientId])"
|
||||
:left-text="$t('claim', [claimId])"
|
||||
:center-text="clientName"
|
||||
:locale="locale">
|
||||
</report-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -2,6 +2,7 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${appPath}/common/css/report.css`,
|
||||
`${appPath}/common/css/misc.css`,
|
||||
`${__dirname}/style.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -1,14 +1,3 @@
|
|||
.container {
|
||||
color: #000
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-bottom: 10px;
|
||||
font-weight: 100;
|
||||
font-size: 1.5em;
|
||||
margin-top: 0
|
||||
}
|
||||
|
||||
.payment-type {
|
||||
width: auto
|
||||
}
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
<html lang="es">
|
||||
<body>
|
||||
<section class="container">
|
||||
<report-header></report-header>
|
||||
<!-- Header component -->
|
||||
<report-header :locale="locale"></report-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<h1 class="title centered">{{$t('title')}}</h1>
|
||||
<section class="panel supplierPanel">
|
||||
|
@ -139,12 +141,13 @@
|
|||
<p class="font small">{{$t('mandatoryFields')}}</p>
|
||||
<p class="font small">{{$t('sendOrder')}}</p>
|
||||
</section>
|
||||
|
||||
<!-- Footer component -->
|
||||
<report-footer id="pageFooter"
|
||||
:left-text="$t('order', [mandateCode])"
|
||||
:left-text="$t('claim', [claimId])"
|
||||
:center-text="clientName"
|
||||
:locale="locale">
|
||||
</report-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,8 @@
|
|||
const CssReader = require(`${appPath}/lib/cssReader`);
|
||||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${appPath}/common/css/report.css`,
|
||||
`${appPath}/common/css/misc.css`,
|
||||
`${__dirname}/style.css`])
|
||||
.mergeStyles();
|
|
@ -0,0 +1,3 @@
|
|||
table.column-oriented {
|
||||
margin-top: 50px !important
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<body>
|
||||
<section class="container" id="report">
|
||||
<!-- Header component -->
|
||||
<report-header :locale="locale"></report-header>
|
||||
<!-- End header component -->
|
||||
<section class="main">
|
||||
<!-- Report start -->
|
||||
<h1 class="title">{{$t('title')}}</h1>
|
||||
<p>{{$t('date')}} {{dated()}}</p>
|
||||
<table class="column-oriented">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>{{$t('concept')}}</th>
|
||||
<th>{{$t('quantity')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="sale in sales" :key="sale.id">
|
||||
<td class="font gray">{{sale.id}}</td>
|
||||
<td>{{sale.concept}}</td>
|
||||
<td>{{sale.quantity}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Report end -->
|
||||
</section>
|
||||
<!-- Footer component -->
|
||||
<report-footer id="pageFooter"
|
||||
:left-text="$t('client', [client.id])"
|
||||
:center-text="client.name"
|
||||
:locale="locale">
|
||||
</report-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,32 @@
|
|||
const strftime = require('strftime');
|
||||
|
||||
module.exports = {
|
||||
name: 'sample-report',
|
||||
created() {
|
||||
if (this.locale)
|
||||
this.$i18n.locale = this.locale;
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
client: {
|
||||
id: 10252,
|
||||
name: 'Batman',
|
||||
},
|
||||
sales: [
|
||||
{id: 1, concept: 'My item 1', quantity: 25},
|
||||
{id: 2, concept: 'My item 2', quantity: 50},
|
||||
{id: 3, concept: 'My item 3', quantity: 150}
|
||||
],
|
||||
locale: 'es'
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
dated: () => {
|
||||
return strftime('%d-%m-%Y', new Date());
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'report-header': require('../report-header'),
|
||||
'report-footer': require('../report-footer'),
|
||||
},
|
||||
};
|
|
@ -0,0 +1,11 @@
|
|||
module.exports = {
|
||||
messages: {
|
||||
es: {
|
||||
title: 'Sample report',
|
||||
date: 'Fecha',
|
||||
quantity: 'Cantidad',
|
||||
concept: 'Concepto',
|
||||
client: 'Cliente {0}',
|
||||
},
|
||||
},
|
||||
};
|
|
@ -2,5 +2,6 @@ const CssReader = require(`${appPath}/lib/cssReader`);
|
|||
|
||||
module.exports = new CssReader([
|
||||
`${appPath}/common/css/layout.css`,
|
||||
`${__dirname}/style.css`])
|
||||
`${appPath}/common/css/email.css`,
|
||||
`${appPath}/common/css/misc.css`])
|
||||
.mergeStyles();
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
<!-- Header component -->
|
||||
<email-header></email-header>
|
||||
<!-- End header component -->
|
||||
|
||||
<section class="main">
|
||||
<!-- Title block -->
|
||||
<div class="title">
|
||||
|
@ -19,10 +18,9 @@
|
|||
<p>{{$t('description.dear')}},</p>
|
||||
<p>{{$t('description.instructions')}}</p>
|
||||
<p>{{$t('description.conclusion')}}</p>
|
||||
|
||||
</section>
|
||||
<!-- Footer component -->
|
||||
<email-footer></email-footer>
|
||||
<email-footer :locale="locale"></email-footer>
|
||||
<!-- End footer component -->
|
||||
</section>
|
||||
</body>
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
CREATE TABLE `salix`.`userConfigView` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`userFk` int(10) unsigned NOT NULL,
|
||||
`tableCode` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`configuration` text COLLATE utf8_unicode_ci,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uniqueUser_TableCode` (`userFk`,`tableCode`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
|
@ -1,18 +0,0 @@
|
|||
CREATE TABLE `salix`.`userTableConfiguration` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`workerFk` INT(11) NOT NULL,
|
||||
`tableCode` VARCHAR(255) NOT NULL,
|
||||
`configuration` TEXT NULL,
|
||||
PRIMARY KEY (`id`));
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER TABLE `salix`.`userTableConfiguration`
|
||||
ADD INDEX `fgn_worker_idx` (`workerFk` ASC);
|
||||
ALTER TABLE `salix`.`userTableConfiguration`
|
||||
ADD CONSTRAINT `fgn_worker`
|
||||
FOREIGN KEY (`workerFk`)
|
||||
REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE;
|
|
@ -0,0 +1,23 @@
|
|||
ALTER TABLE `vn2008`.`expeditions`
|
||||
ADD COLUMN `externalId` BIGINT(25) NULL DEFAULT NULL AFTER `workerFk`;
|
||||
|
||||
|
||||
USE `vn`;
|
||||
CREATE
|
||||
OR REPLACE ALGORITHM = UNDEFINED
|
||||
DEFINER = `root`@`%`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `vn`.`expedition` AS
|
||||
SELECT
|
||||
`e`.`expeditions_id` AS `id`,
|
||||
`e`.`agency_id` AS `agencyModeFk`,
|
||||
`e`.`ticket_id` AS `ticketFk`,
|
||||
`e`.`EsBulto` AS `isBox`,
|
||||
`e`.`odbc_date` AS `created`,
|
||||
`e`.`Id_Article` AS `itemFk`,
|
||||
`e`.`counter` AS `counter`,
|
||||
`e`.`checked` AS `checked`,
|
||||
`e`.`workerFk` AS `workerFk`,
|
||||
`e`.`externalId` AS `externalId`
|
||||
FROM
|
||||
`vn2008`.`expeditions` `e`;
|
|
@ -211,35 +211,36 @@ INSERT INTO `vn`.`clientManaCache`(`clientFk`, `mana`, `dated`)
|
|||
|
||||
INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `isDefaultAddress`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`)
|
||||
VALUES
|
||||
(101, 'address 01', 'Somewhere in Thailand', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(102, 'address 02', 'Somewhere in Poland', 'Silla', 46460, 1, 3333333333, 444444444, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(103, 'address 03', 'Somewhere in Japan', 'Silla', 46460, 1, 3333333333, 444444444, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(104, 'address 04', 'Somewhere in Spain', 'Silla', 46460, 1, 3333333333, 444444444, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(105, 'address 05', 'Somewhere in Potugal', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(106, 'address 06', 'Somewhere in UK', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(107, 'address 07', 'Somewhere in Valencia', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(108, 'address 08', 'Somewhere in Silla', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(109, 'address 09', 'Somewhere in London', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(110, 'address 10', 'Somewhere in Algemesi', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(111, 'address 11', 'Somewhere in Carlet', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(112, 'address 12', 'Somewhere in Campanar', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(113, 'address 13', 'Somewhere in Malilla', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(114, 'address 14', 'Somewhere in France', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(115, 'address 15', 'Somewhere in Birmingham', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(116, 'address 16', 'Somewhere in Scotland', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(117, 'address 17', 'Somewhere in nowhere', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(118, 'address 18', 'Somewhere over the rainbow', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(119, 'address 19', 'Somewhere in Alberic', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(120, 'address 20', 'Somewhere in Montortal', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(121, 'address 21', 'the bat cave', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 101, 2, NULL, NULL, 0),
|
||||
(122, 'address 22', 'NY roofs', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 102, 2, NULL, NULL, 0),
|
||||
(123, 'address 23', 'The phone box', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 103, 2, NULL, NULL, 0),
|
||||
(124, 'address 24', 'Stark tower', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 104, 2, NULL, NULL, 0),
|
||||
(125, 'address 25', 'The plastic cell', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 105, 2, NULL, NULL, 0),
|
||||
(126, 'address 26', 'Many places', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 106, 2, NULL, NULL, 0),
|
||||
(127, 'address 27', 'Your pocket', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 107, 2, NULL, NULL, 0),
|
||||
(128, 'address 28', 'Cerebro', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 108, 2, NULL, NULL, 0),
|
||||
(129, 'address 29', 'Luke Cages Bar', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 110, 2, NULL, NULL, 0);
|
||||
(101, 'address 01', 'Somewhere in Thailand', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(102, 'address 02', 'Somewhere in Poland', 'Silla', 46460, 1, 3333333333, 444444444, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(103, 'address 03', 'Somewhere in Japan', 'Silla', 46460, 1, 3333333333, 444444444, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(104, 'address 04', 'Somewhere in Spain', 'Silla', 46460, 1, 3333333333, 444444444, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(105, 'address 05', 'Somewhere in Potugal', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(106, 'address 06', 'Somewhere in UK', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(107, 'address 07', 'Somewhere in Valencia', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(108, 'address 08', 'Somewhere in Silla', 'Silla', 46460, 1, 5555555555, 666666666, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(109, 'address 09', 'Somewhere in London', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(110, 'address 10', 'Somewhere in Algemesi', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(111, 'address 11', 'Somewhere in Carlet', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(112, 'address 12', 'Somewhere in Campanar', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(113, 'address 13', 'Somewhere in Malilla', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(114, 'address 14', 'Somewhere in France', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(115, 'address 15', 'Somewhere in Birmingham', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(116, 'address 16', 'Somewhere in Scotland', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(117, 'address 17', 'Somewhere in nowhere', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(118, 'address 18', 'Somewhere over the rainbow', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(119, 'address 19', 'Somewhere in Alberic', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(120, 'address 20', 'Somewhere in Montortal', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 109, 2, NULL, NULL, 0),
|
||||
(121, 'address 21', 'the bat cave', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 101, 2, NULL, NULL, 0),
|
||||
(122, 'address 22', 'NY roofs', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 102, 2, NULL, NULL, 0),
|
||||
(123, 'address 23', 'The phone box', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 103, 2, NULL, NULL, 0),
|
||||
(124, 'address 24', 'Stark tower', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 104, 2, NULL, NULL, 0),
|
||||
(125, 'address 25', 'The plastic cell', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 105, 2, NULL, NULL, 0),
|
||||
(126, 'address 26', 'Many places', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 106, 2, NULL, NULL, 0),
|
||||
(127, 'address 27', 'Your pocket', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 107, 2, NULL, NULL, 0),
|
||||
(128, 'address 28', 'Cerebro', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 108, 2, NULL, NULL, 0),
|
||||
(129, 'address 29', 'Luke Cages Bar', 'Silla', 46460, 1, 1111111111, 222222222, 1, 0, 110, 2, NULL, NULL, 0),
|
||||
(130, 'address 30', 'Non valid address', 'Silla', 46460, 1, 1111111111, 222222222, 0, 0, 101, 2, NULL, NULL, 0);
|
||||
|
||||
INSERT INTO `vn`.`clientCredit`(`id`, `clientFk`, `workerFk`, `amount`, `created`)
|
||||
VALUES
|
||||
|
|
Loading…
Reference in New Issue