feat: refs #6739 transferInvoice new functionality #2412
|
@ -33,7 +33,6 @@ module.exports = Self => {
|
|||
try {
|
||||
await Self.makePdf(id, options);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
throw new UserError('Error while generating PDF', 'pdfError');
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,11 @@ module.exports = Self => {
|
|||
type: 'number',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
arg: 'checked',
|
||||
type: 'boolean',
|
||||
required: true
|
||||
},
|
||||
],
|
||||
returns: {
|
||||
type: 'boolean',
|
||||
|
@ -51,6 +56,7 @@ module.exports = Self => {
|
|||
const models = Self.app.models;
|
||||
const myOptions = {userId: ctx.req.accessToken.userId};
|
||||
const {id, refFk, newClientFk, cplusRectificationTypeFk, siiTypeInvoiceOutFk, invoiceCorrectionTypeFk} = ctx.args;
|
||||
const checked = ctx.args.checked;
|
||||
let tx;
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
@ -96,9 +102,10 @@ module.exports = Self => {
|
|||
|
||||
await models.Ticket.invoiceTickets(ctx, refundTicketIds, invoiceCorrection, myOptions);
|
||||
|
||||
const [invoiceId] = await models.Ticket.invoiceTicketsAndPdf(ctx, clonedTicketIds, null, myOptions);
|
||||
|
||||
return invoiceId;
|
||||
if (!checked) {
|
||||
const [invoiceId] = await models.Ticket.invoiceTicketsAndPdf(ctx, clonedTicketIds, null, myOptions);
|
||||
return invoiceId;
|
||||
}
|
||||
} catch (e) {
|
||||
if (tx) await tx.rollback();
|
||||
throw e;
|
||||
|
|
|
@ -1,15 +1,3 @@
|
|||
<vn-crud-model
|
||||
auto-load="true"
|
||||
url="CplusRectificationTypes"
|
||||
data="cplusRectificationTypes"
|
||||
order="description">
|
||||
</vn-crud-model>
|
||||
<vn-crud-model
|
||||
auto-load="true"
|
||||
url="SiiTypeInvoiceOuts"
|
||||
data="siiTypeInvoiceOuts"
|
||||
where="{code: {like: 'R%'}}">
|
||||
</vn-crud-model>
|
||||
<vn-crud-model
|
||||
auto-load="true"
|
||||
url="InvoiceCorrectionTypes"
|
||||
|
@ -211,14 +199,14 @@
|
|||
vn-one
|
||||
vn-id="cplusRectificationType"
|
||||
required="true"
|
||||
data="cplusRectificationTypes"
|
||||
data="$ctrl.cplusRectificationTypes"
|
||||
show-field="description"
|
||||
value-field="id"
|
||||
ng-model="$ctrl.cplusRectificationType"
|
||||
search-function="{or: [{id: $search}, {description: {like: '%'+ $search +'%'}}]}"
|
||||
label="Rectificative type">
|
||||
<tpl-item>
|
||||
{{::description}}
|
||||
{{ ::description}}
|
||||
</tpl-item>
|
||||
</vn-autocomplete>
|
||||
</vn-horizontal>
|
||||
|
@ -226,7 +214,7 @@
|
|||
<vn-autocomplete
|
||||
vn-one
|
||||
vn-id="siiTypeInvoiceOut"
|
||||
data="siiTypeInvoiceOuts"
|
||||
data="$ctrl.siiTypeInvoiceOuts"
|
||||
show-field="description"
|
||||
value-field="id"
|
||||
fields="['id','code','description']"
|
||||
|
@ -248,6 +236,14 @@
|
|||
label="Type">
|
||||
jon marked this conversation as resolved
Outdated
|
||||
</vn-autocomplete>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-check
|
||||
ng-model="$ctrl.isChecked"
|
||||
label="destinationClient"
|
||||
info="transferInvoiceInfo"
|
||||
/>
|
||||
</vn-check>
|
||||
</vn-horizontal>
|
||||
</section>
|
||||
</tpl-body>
|
||||
<tpl-buttons>
|
||||
|
|
|
@ -7,6 +7,7 @@ class Controller extends Section {
|
|||
super($element, $);
|
||||
this.vnReport = vnReport;
|
||||
this.vnEmail = vnEmail;
|
||||
this.checked = true;
|
||||
}
|
||||
|
||||
get invoiceOut() {
|
||||
|
@ -23,6 +24,26 @@ class Controller extends Section {
|
|||
return this.aclService.hasAny(['invoicing']);
|
||||
}
|
||||
|
||||
get isChecked() {
|
||||
return this.checked;
|
||||
}
|
||||
|
||||
set isChecked(value) {
|
||||
this.checked = value;
|
||||
}
|
||||
|
||||
$onInit() {
|
||||
this.$http.get(`CplusRectificationTypes`, {filter: {order: 'description'}})
|
||||
.then(res => {
|
||||
this.cplusRectificationTypes = res.data;
|
||||
this.cplusRectificationType = res.data.filter(type => type.description == 'I – Por diferencias')[0].id;
|
||||
});
|
||||
this.$http.get(`SiiTypeInvoiceOuts`, {filter: {where: {code: {like: 'R%'}}}})
|
||||
.then(res => {
|
||||
this.siiTypeInvoiceOuts = res.data;
|
||||
this.siiTypeInvoiceOut = res.data.filter(type => type.code == 'R4')[0].id;
|
||||
});
|
||||
}
|
||||
loadData() {
|
||||
const filter = {
|
||||
include: [
|
||||
|
@ -34,7 +55,7 @@ class Controller extends Section {
|
|||
}, {
|
||||
relation: 'client',
|
||||
scope: {
|
||||
fields: ['id', 'name', 'email']
|
||||
fields: ['id', 'name', 'email', 'hasToInvoiceByAddress']
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -136,12 +157,24 @@ class Controller extends Section {
|
|||
newClientFk: this.clientId,
|
||||
cplusRectificationTypeFk: this.cplusRectificationType,
|
||||
siiTypeInvoiceOutFk: this.siiTypeInvoiceOut,
|
||||
invoiceCorrectionTypeFk: this.invoiceCorrectionType
|
||||
invoiceCorrectionTypeFk: this.invoiceCorrectionType,
|
||||
checked: this.checked
|
||||
};
|
||||
this.$http.post(`InvoiceOuts/transferInvoice`, params).then(res => {
|
||||
const invoiceId = res.data;
|
||||
this.vnApp.showSuccess(this.$t('Transferred invoice'));
|
||||
this.$state.go('invoiceOut.card.summary', {id: invoiceId});
|
||||
|
||||
this.$http.get(`Clients/${this.clientId}`).then(response => {
|
||||
const clientData = response.data;
|
||||
jon marked this conversation as resolved
Outdated
jgallego
commented
usar el negado para no llamar 2 veces a la funcion usar el negado para no llamar 2 veces a la funcion
|
||||
const hasToInvoiceByAddress = clientData.hasToInvoiceByAddress;
|
||||
|
||||
if (this.checked && hasToInvoiceByAddress) {
|
||||
if (!window.confirm(this.$t('confirmTransferInvoice')))
|
||||
return;
|
||||
}
|
||||
|
||||
this.$http.post(`InvoiceOuts/transferInvoice`, params).then(res => {
|
||||
const invoiceId = res.data;
|
||||
this.vnApp.showSuccess(this.$t('Transferred invoice'));
|
||||
this.$state.go('invoiceOut.card.summary', {id: invoiceId});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
The following refund tickets have been created: "The following refund tickets have been created: {{ticketIds}}"
|
||||
Transfer invoice to...: Transfer invoice to...
|
||||
Cplus Type: Cplus Type
|
||||
Cplus Type: Cplus Type
|
||||
transferInvoice: Transfer Invoice
|
||||
destinationClient: Bill destination client
|
||||
transferInvoiceInfo: New tickets from the destination customer will be generated in the default consignee.
|
||||
confirmTransferInvoice: Destination customer has marked to bill by consignee, do you want to continue?
|
|
@ -24,3 +24,7 @@ Refund...: Abono...
|
|||
Transfer invoice to...: Transferir factura a...
|
||||
Rectificative type: Tipo rectificativa
|
||||
Transferred invoice: Factura transferida
|
||||
transferInvoice: Transferir factura
|
||||
destinationClient: Facturar cliente destino
|
||||
transferInvoiceInfo: Los nuevos tickets del cliente destino serán generados en el consignatario por defecto.
|
||||
jgallego marked this conversation as resolved
Outdated
jgallego
commented
esta clave checkinfo es ambigua, podria tener colisiones con otras secciones y ser de algo totalmente distinto, pon algo mas concreto si no te viene nada chatgpt esta clave checkinfo es ambigua, podria tener colisiones con otras secciones y ser de algo totalmente distinto, pon algo mas concreto si no te viene nada chatgpt
|
||||
confirmTransferInvoice: El cliente destino tiene marcado facturar por consignatario, ¿desea continuar?
|
Loading…
Reference in New Issue
no poner numeros