feat: refs #6739 transferInvoice new functionality #2412

Merged
jon merged 10 commits from 6739-transferInvoiceOut into dev 2024-05-10 04:51:42 +00:00
5 changed files with 58 additions and 10 deletions
Showing only changes of commit 4e78307a8d - Show all commits

View File

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

View File

@ -215,6 +215,7 @@
show-field="description"
value-field="id"
ng-model="$ctrl.cplusRectificationType"
ng-init="$ctrl.cplusRectificationType = (cplusRectificationTypes.length > 0 ? cplusRectificationTypes[1].id : null)"
search-function="{or: [{id: $search}, {description: {like: '%'+ $search +'%'}}]}"
label="Rectificative type">
<tpl-item>
@ -232,6 +233,7 @@
fields="['id','code','description']"
required="true"
ng-model="$ctrl.siiTypeInvoiceOut"
ng-init="$ctrl.siiTypeInvoiceOut = (siiTypeInvoiceOuts.length > 0 ? siiTypeInvoiceOuts[3].id : null)"
jon marked this conversation as resolved Outdated

no poner numeros

no poner numeros
label="Class">
<tpl-item>
{{::code}} - {{::description}}
@ -248,6 +250,14 @@
label="Type">
</vn-autocomplete>
</vn-horizontal>
<vn-horizontal>
<vn-check
ng-model="$ctrl.isChecked"
label="destinationClient"
info="checkinfo"
/>
</vn-check>
</vn-horizontal>
</section>
</tpl-body>
<tpl-buttons>

View File

@ -7,6 +7,7 @@ class Controller extends Section {
super($element, $);
this.vnReport = vnReport;
this.vnEmail = vnEmail;
this.checked = true;
}
get invoiceOut() {
@ -23,6 +24,14 @@ class Controller extends Section {
return this.aclService.hasAny(['invoicing']);
}
get isChecked() {
return this.checked;
}
set isChecked(value) {
this.checked = value;
}
loadData() {
const filter = {
include: [
@ -34,7 +43,7 @@ class Controller extends Section {
}, {
relation: 'client',
scope: {
fields: ['id', 'name', 'email']
fields: ['id', 'name', 'email', 'hasToInvoiceByAddress']
}
}
]
@ -136,12 +145,28 @@ 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;
const hasToInvoiceByAddress = clientData.hasToInvoiceByAddress;
if (this.checked && hasToInvoiceByAddress) {
if (window.confirm('El cliente destino tiene marcado facturar por consignatario, ¿desea continuar?')) {
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});
});
}
} else {
this.$http.post(`InvoiceOuts/transferInvoice`, params).then(res => {
const invoiceId = res.data;
jon marked this conversation as resolved Outdated

usar el negado para no llamar 2 veces a la funcion

usar el negado para no llamar 2 veces a la funcion
this.vnApp.showSuccess(this.$t('Transferred invoice'));
this.$state.go('invoiceOut.card.summary', {id: invoiceId});
});
}
});
}
}

View File

@ -1,3 +1,6 @@
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
checkinfo: New tickets from the destination customer will be generated in the consignee by default.

View File

@ -24,3 +24,6 @@ Refund...: Abono...
Transfer invoice to...: Transferir factura a...
Rectificative type: Tipo rectificativa
Transferred invoice: Factura transferida
transferInvoice: Transferir factura
destinationClient: Facturar cliente destino
checkinfo: Los nuevos tickets del cliente destino, serán generados en el consignatario por defecto.
jgallego marked this conversation as resolved Outdated

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