This commit is contained in:
Juan Ferrer 2019-02-06 11:24:31 +01:00
commit 2bf9244770
79 changed files with 590 additions and 478 deletions

View File

@ -38,7 +38,7 @@
"Vehicle": {
"dataSource": "vn"
},
"UserTableConfiguration": {
"UserConfigView": {
"dataSource": "vn"
}
}

View File

@ -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"
}
}
}

View File

@ -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)'
},

View File

@ -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();
}
/**

View File

@ -13,3 +13,4 @@ import './effects.scss';
import './order-product.scss';
import './summary.scss';
import './descriptor.scss';
import './modal-form.scss';

View File

@ -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;
}
}

View File

@ -1,12 +1,12 @@
<vn-dialog
vn-id="dialog"
class="modal-form">
<tpl-body>
<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 class="header">
<h5><span translate>New payment</span></h5>
</vn-horizontal>
<div pad-medium>
<vn-horizontal>
<vn-date-picker vn-one
label="Date"
@ -36,9 +36,10 @@
vn-focus>
</vn-textfield>
</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>
</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>
</tpl-body>
</vn-dialog>

View File

@ -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: '<?'
}
});

View File

@ -0,0 +1,3 @@
vn-horizontal.buttons-bar{
text-align: center;
}

View File

@ -94,13 +94,16 @@
<vn-pagination model="model"></vn-pagination>
</vn-card>
</vn-vertical>
<a ui-sref="client.card.risk.create"
vn-tooltip="New payment"
vn-bind="+"
fixed-bottom-right>
<vn-float-button
vn-acl="administrative"
vn-acl-action="remove"
icon="add">
icon="add"
vn-tooltip="New payment"
vn-bind="+"
fixed-bottom-right
ng-click="$ctrl.openCreateDialog()">
</vn-float-button>
</a>
<vn-client-risk-create vn-id="riskCreateDialog">
</vn-client-risk-create>

View File

@ -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');
}

View File

@ -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
}
}
}
}

View File

@ -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}}">

View File

@ -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>

View File

@ -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}}">

View File

@ -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'
}
});

View File

@ -1,5 +1,4 @@
import ngModule from '../module';
import './style.scss';
class Controller {
constructor($state, $scope, $http, vnApp, $translate) {

View File

@ -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,

View File

@ -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();
return;
}
else
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 = {};

View File

@ -42,4 +42,8 @@ vn-catalog-filter > div {
flex-wrap: wrap;
padding: $pad-medium;
}
vn-autocomplete[vn-id="type"] .list {
max-height: 20em
}
}

View File

@ -27,6 +27,9 @@
},
"checked": {
"type": "Number"
},
"externalId": {
"type": "Number"
}
},
"relations": {

View File

@ -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>

View File

@ -1,5 +1,6 @@
import ngModule from '../../module';
import {toJsonDate} from 'core/lib/date';
import './style.scss';
class Controller {
constructor($scope, $http, $translate, vnApp) {

View File

@ -0,0 +1,13 @@
@import 'colors';
tpl-item{
&.notActive {
background-color: $main-bg;
color: $secondary-font-color;
width: 100%;
}
& > .inactive {
text-transform: uppercase;
}
}

View File

@ -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"

View File

@ -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');
}

View File

@ -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>

View File

@ -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 {

View File

@ -0,0 +1,10 @@
body {
zoom: 0.55
}
.title {
margin-bottom: 20px;
font-weight: 100;
margin-top: 0;
font-size: 2em
}

View File

@ -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"},

View File

@ -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();

View File

@ -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
}

View File

@ -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>

View File

@ -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();

View File

@ -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
}

View File

@ -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>

View File

@ -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();

View File

@ -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
}

View File

@ -8,7 +8,6 @@
<!-- Header component -->
<email-header></email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">

View File

@ -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();

View File

@ -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
}

View File

@ -8,7 +8,6 @@
<!-- Header component -->
<email-header></email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">

View File

@ -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();

View File

@ -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
}

View File

@ -8,7 +8,6 @@
<!-- Header component -->
<email-header></email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">

View File

@ -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();

View File

@ -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
}

View File

@ -8,7 +8,6 @@
<!-- Header component -->
<email-header></email-header>
<!-- End header component -->
<section class="main">
<!-- Title block -->
<div class="title">

View File

@ -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();

View File

@ -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
}

View File

@ -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>

View File

@ -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();

View File

@ -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
}

View File

@ -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>

View File

@ -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) {

View File

@ -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();

View File

@ -0,0 +1,3 @@
table.column-oriented {
margin-top: 50px !important
}

View File

@ -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>

View File

@ -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'),
},
};

View File

@ -0,0 +1,11 @@
module.exports = {
messages: {
es: {
title: 'Sample report',
date: 'Fecha',
quantity: 'Cantidad',
concept: 'Concepto',
client: 'Cliente {0}',
},
},
};

View File

@ -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();

View File

@ -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
}

View File

@ -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>

View File

@ -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();

View File

@ -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
}

View File

@ -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>

View File

@ -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();

View File

@ -0,0 +1,3 @@
table.column-oriented {
margin-top: 50px !important
}

View File

@ -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>

View File

@ -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'),
},
};

View File

@ -0,0 +1,11 @@
module.exports = {
messages: {
es: {
title: 'Sample report',
date: 'Fecha',
quantity: 'Cantidad',
concept: 'Concepto',
client: 'Cliente {0}',
},
},
};

View File

@ -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();

View File

@ -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>

View File

@ -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;

View File

@ -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;

View File

@ -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`;

View File

@ -239,7 +239,8 @@ INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `pr
(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);
(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