refs #5252 feat: permite crear un abono con o sin almacén
gitea/salix/pipeline/head There was a failure building this commit
Details
gitea/salix/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
766d809523
commit
2c7473b064
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `vn`.`ticket` MODIFY COLUMN warehouseFk smallint(6) unsigned DEFAULT 1 NULL;
|
|
@ -2,11 +2,19 @@ module.exports = Self => {
|
|||
Self.remoteMethod('refund', {
|
||||
description: 'Create refund tickets with sales and services if provided',
|
||||
accessType: 'WRITE',
|
||||
accepts: [{
|
||||
arg: 'ref',
|
||||
type: 'string',
|
||||
description: 'The invoice reference'
|
||||
}],
|
||||
accepts: [
|
||||
{
|
||||
arg: 'ref',
|
||||
type: 'string',
|
||||
description: 'The invoice reference',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
arg: 'withWarehouse',
|
||||
type: 'boolean',
|
||||
required: true
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
type: ['number'],
|
||||
root: true
|
||||
|
@ -17,7 +25,7 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.refund = async(ref, options) => {
|
||||
Self.refund = async(ref, withWarehouse, options) => {
|
||||
const models = Self.app.models;
|
||||
const myOptions = {};
|
||||
let tx;
|
||||
|
@ -35,7 +43,7 @@ module.exports = Self => {
|
|||
const tickets = await models.Ticket.find(filter, myOptions);
|
||||
|
||||
const ticketsIds = tickets.map(ticket => ticket.id);
|
||||
const refundedTickets = await models.Ticket.refund(ticketsIds, myOptions);
|
||||
const refundedTickets = await models.Ticket.refund(ticketsIds, withWarehouse, myOptions);
|
||||
|
||||
if (tx) await tx.commit();
|
||||
|
||||
|
|
|
@ -76,14 +76,27 @@
|
|||
translate>
|
||||
Show CITES letter
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="refundConfirmation.show()"
|
||||
name="refundInvoice"
|
||||
<vn-item class="dropdown"
|
||||
vn-click-stop="refundMenu.show($event, 'left')"
|
||||
vn-tooltip="Create a single ticket with all the content of the current invoice"
|
||||
vn-acl="invoicing, claimManager, salesAssistant"
|
||||
vn-acl-action="remove"
|
||||
translate>
|
||||
Refund
|
||||
Refund...
|
||||
<vn-menu vn-id="refundMenu">
|
||||
<vn-list>
|
||||
<vn-item
|
||||
ng-click="$ctrl.refundInvoiceOut(true)"
|
||||
translate>
|
||||
with warehouse
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.refundInvoiceOut(false)"
|
||||
translate>
|
||||
without warehouse
|
||||
</vn-item>
|
||||
</vn-list>
|
||||
</vn-menu>
|
||||
</vn-item>
|
||||
</vn-list>
|
||||
</vn-menu>
|
||||
|
@ -97,12 +110,7 @@
|
|||
on-accept="$ctrl.bookInvoiceOut()"
|
||||
question="Are you sure you want to book this invoice?">
|
||||
</vn-confirm>
|
||||
<vn-confirm
|
||||
vn-id="refundConfirmation"
|
||||
on-accept="$ctrl.refundInvoiceOut()"
|
||||
question="Are you sure you want to refund this invoice?">
|
||||
</vn-confirm>
|
||||
<vn-client-descriptor-popover
|
||||
<vn-client-descriptor-popover
|
||||
vn-id="clientDescriptor">
|
||||
</vn-client-descriptor-popover>
|
||||
|
||||
|
@ -148,4 +156,4 @@
|
|||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||
<button response="accept" translate>Confirm</button>
|
||||
</tpl-buttons>
|
||||
</vn-dialog>
|
||||
</vn-dialog>
|
||||
|
|
|
@ -114,9 +114,9 @@ class Controller extends Section {
|
|||
});
|
||||
}
|
||||
|
||||
refundInvoiceOut() {
|
||||
refundInvoiceOut(withWarehouse) {
|
||||
const query = 'InvoiceOuts/refund';
|
||||
const params = {ref: this.invoiceOut.ref};
|
||||
const params = {ref: this.invoiceOut.ref, withWarehouse: withWarehouse};
|
||||
this.$http.post(query, params).then(res => {
|
||||
const refundTicket = res.data;
|
||||
this.vnApp.showSuccess(this.$t('The following refund ticket have been created', {
|
||||
|
|
|
@ -13,10 +13,11 @@ InvoiceOut deleted: Factura eliminada
|
|||
Are you sure you want to delete this invoice?: Estas seguro de eliminar esta factura?
|
||||
Are you sure you want to clone this invoice?: Estas seguro de clonar esta factura?
|
||||
InvoiceOut booked: Factura asentada
|
||||
Are you sure you want to book this invoice?: Estas seguro de querer asentar esta factura?
|
||||
Are you sure you want to book this invoice?: Estas seguro de querer asentar esta factura?
|
||||
Are you sure you want to refund this invoice?: Estas seguro de querer abonar esta factura?
|
||||
Create a single ticket with all the content of the current invoice: Crear un ticket unico con todo el contenido de la factura actual
|
||||
Regenerate PDF invoice: Regenerar PDF factura
|
||||
The invoice PDF document has been regenerated: El documento PDF de la factura ha sido regenerado
|
||||
The email can't be empty: El correo no puede estar vacío
|
||||
The following refund tickets have been created: "Se han creado los siguientes tickets de abono: {{ticketIds}}"
|
||||
Refund...: Abono...
|
||||
|
|
|
@ -11,6 +11,11 @@ module.exports = Self => {
|
|||
{
|
||||
arg: 'servicesIds',
|
||||
type: ['number']
|
||||
},
|
||||
{
|
||||
arg: 'withWarehouse',
|
||||
type: 'boolean',
|
||||
required: true
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
|
@ -23,7 +28,7 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.refund = async(salesIds, servicesIds, options) => {
|
||||
Self.refund = async(salesIds, servicesIds, withWarehouse, options) => {
|
||||
const models = Self.app.models;
|
||||
const myOptions = {};
|
||||
let tx;
|
||||
|
@ -65,7 +70,7 @@ module.exports = Self => {
|
|||
const now = Date.vnNew();
|
||||
const [firstTicketId] = ticketsIds;
|
||||
|
||||
const refundTicket = await createTicketRefund(firstTicketId, now, refundAgencyMode, refoundZoneId, myOptions);
|
||||
const refundTicket = await createTicketRefund(firstTicketId, now, refundAgencyMode, refoundZoneId, withWarehouse, myOptions);
|
||||
|
||||
for (const sale of sales) {
|
||||
const createdSale = await models.Sale.create({
|
||||
|
@ -110,7 +115,7 @@ module.exports = Self => {
|
|||
}
|
||||
};
|
||||
|
||||
async function createTicketRefund(ticketId, now, refundAgencyMode, refoundZoneId, myOptions) {
|
||||
async function createTicketRefund(ticketId, now, refundAgencyMode, refoundZoneId, withWarehouse, myOptions) {
|
||||
const models = Self.app.models;
|
||||
|
||||
const filter = {include: {relation: 'address'}};
|
||||
|
@ -122,7 +127,7 @@ module.exports = Self => {
|
|||
addressFk: ticket.address().id,
|
||||
agencyModeFk: refundAgencyMode.id,
|
||||
nickname: ticket.address().nickname,
|
||||
warehouseFk: ticket.warehouseFk,
|
||||
warehouseFk: withWarehouse ? ticket.warehouseFk : null,
|
||||
companyFk: ticket.companyFk,
|
||||
landed: now,
|
||||
zoneFk: refoundZoneId
|
||||
|
|
|
@ -7,6 +7,11 @@ module.exports = Self => {
|
|||
arg: 'ticketsIds',
|
||||
type: ['number'],
|
||||
required: true
|
||||
},
|
||||
{
|
||||
arg: 'withWarehouse',
|
||||
type: 'boolean',
|
||||
required: true
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
|
@ -19,7 +24,7 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.refund = async(ticketsIds, options) => {
|
||||
Self.refund = async(ticketsIds, withWarehouse, options) => {
|
||||
const models = Self.app.models;
|
||||
const myOptions = {};
|
||||
let tx;
|
||||
|
@ -41,7 +46,7 @@ module.exports = Self => {
|
|||
const services = await models.TicketService.find(filter, myOptions);
|
||||
const servicesIds = services.map(service => service.id);
|
||||
|
||||
const refundedTickets = await models.Sale.refund(salesIds, servicesIds, myOptions);
|
||||
const refundedTickets = await models.Sale.refund(salesIds, servicesIds, withWarehouse, myOptions);
|
||||
|
||||
if (tx) await tx.commit();
|
||||
|
||||
|
|
|
@ -141,12 +141,27 @@
|
|||
translate>
|
||||
Recalculate components
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="refundAllConfirmation.show()"
|
||||
<vn-item class="dropdown"
|
||||
vn-click-stop="refundMenu.show($event, 'left')"
|
||||
vn-acl="invoicing, claimManager, salesAssistant"
|
||||
vn-acl-action="remove"
|
||||
vn-tooltip="Create a single ticket with all the content of the current ticket"
|
||||
translate>
|
||||
Refund all
|
||||
Refund all...
|
||||
<vn-menu vn-id="refundMenu">
|
||||
<vn-list>
|
||||
<vn-item
|
||||
ng-click="$ctrl.refund(true)"
|
||||
translate>
|
||||
with warehouse
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.refund(false)"
|
||||
translate>
|
||||
without warehouse
|
||||
</vn-item>
|
||||
</vn-list>
|
||||
</vn-menu>
|
||||
</vn-item>
|
||||
</vn-list>
|
||||
</vn-menu>
|
||||
|
@ -319,14 +334,6 @@
|
|||
message="Recalculate components">
|
||||
</vn-confirm>
|
||||
|
||||
<!-- Refund all confirmation dialog -->
|
||||
<vn-confirm
|
||||
vn-id="refundAllConfirmation"
|
||||
on-accept="$ctrl.refund()"
|
||||
question="Are you sure you want to refund all?"
|
||||
message="Refund all">
|
||||
</vn-confirm>
|
||||
|
||||
<!-- Client balance popup-->
|
||||
<vn-client-balance-create
|
||||
vn-id="balance-create"
|
||||
|
|
|
@ -297,16 +297,17 @@ class Controller extends Section {
|
|||
.then(() => this.vnApp.showSuccess(this.$t('Data saved!')));
|
||||
}
|
||||
|
||||
async refund() {
|
||||
const params = {ticketsIds: [this.id]};
|
||||
refund(withWarehouse) {
|
||||
const params = {ticketsIds: [this.id], withWarehouse: withWarehouse};
|
||||
const query = 'Tickets/refund';
|
||||
return this.$http.post(query, params).then(res => {
|
||||
const refundTicket = res.data;
|
||||
this.vnApp.showSuccess(this.$t('The following refund ticket have been created', {
|
||||
ticketId: refundTicket.id
|
||||
}));
|
||||
this.$state.go('ticket.card.sale', {id: refundTicket.id});
|
||||
});
|
||||
return this.$http.post(query, params)
|
||||
.then(res => {
|
||||
const refundTicket = res.data;
|
||||
this.vnApp.showSuccess(this.$t('The following refund ticket have been created', {
|
||||
ticketId: refundTicket.id
|
||||
}));
|
||||
this.$state.go('ticket.card.sale', {id: refundTicket.id});
|
||||
});
|
||||
}
|
||||
|
||||
onSmsSend(sms) {
|
||||
|
|
|
@ -10,7 +10,9 @@ Send CSV: Enviar CSV
|
|||
Send CSV Delivery Note: Enviar albarán en CSV
|
||||
Send PDF Delivery Note: Enviar albarán en PDF
|
||||
Show Proforma: Ver proforma
|
||||
Refund all: Abonar todo
|
||||
Refund all...: Abonar todo...
|
||||
with warehouse: con almacén
|
||||
without warehouse: sin almacén
|
||||
Invoice sent: Factura enviada
|
||||
The following refund ticket have been created: "Se ha creado siguiente ticket de abono: {{ticketId}}"
|
||||
Transfer client: Transferir cliente
|
||||
|
@ -18,3 +20,4 @@ SMS Notify changes: SMS Notificar cambios
|
|||
PDF sent!: ¡PDF enviado!
|
||||
Already exist signed delivery note: Ya existe albarán de entrega firmado
|
||||
Are you sure you want to replace this delivery note?: ¿Seguro que quieres reemplazar este albarán de entrega?
|
||||
Create a single ticket with all the content of the current ticket: Crea un ticket único con todo el contenido del ticket actual
|
||||
|
|
|
@ -481,7 +481,7 @@
|
|||
on-accept="$ctrl.transferSales($ctrl.transfer.ticketId)">
|
||||
</vn-confirm>
|
||||
|
||||
<vn-confirm
|
||||
<vn-confirm
|
||||
vn-id="claimConfirm"
|
||||
question="Do you want to continue?"
|
||||
message="Claim out of time"
|
||||
|
@ -515,7 +515,7 @@
|
|||
name="claim"
|
||||
ng-click="claimSure.show()"
|
||||
ng-if="$ctrl.isClaimable">
|
||||
Add claim
|
||||
Add claim
|
||||
</vn-item>
|
||||
<vn-item translate
|
||||
name="reserve"
|
||||
|
@ -529,11 +529,25 @@
|
|||
ng-if="$ctrl.isEditable && $ctrl.hasReserves()">
|
||||
Unmark as reserved
|
||||
</vn-item>
|
||||
<vn-item translate
|
||||
name="refund"
|
||||
ng-click="$ctrl.createRefund()"
|
||||
vn-acl="invoicing, claimManager, salesAssistant"
|
||||
vn-acl-action="remove">
|
||||
Refund
|
||||
</vn-item>
|
||||
<vn-item class="dropdown"
|
||||
vn-click-stop="refundMenu.show($event, 'left')"
|
||||
vn-acl="invoicing, claimManager, salesAssistant"
|
||||
vn-acl-action="remove"
|
||||
translate>
|
||||
Refund...
|
||||
<vn-menu vn-id="refundMenu">
|
||||
<vn-list>
|
||||
<vn-item
|
||||
ng-click="$ctrl.createRefund(true)"
|
||||
translate>
|
||||
with warehouse
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.createRefund(false)"
|
||||
translate>
|
||||
without warehouse
|
||||
</vn-item>
|
||||
</vn-list>
|
||||
</vn-menu>
|
||||
</vn-item>
|
||||
</vn-menu>
|
||||
|
|
|
@ -510,13 +510,12 @@ class Controller extends Section {
|
|||
});
|
||||
}
|
||||
|
||||
createRefund() {
|
||||
createRefund(withWarehouse) {
|
||||
const sales = this.selectedValidSales();
|
||||
if (!sales) return;
|
||||
|
||||
const salesIds = sales.map(sale => sale.id);
|
||||
|
||||
const params = {salesIds: salesIds};
|
||||
const params = {salesIds: salesIds, withWarehouse: withWarehouse};
|
||||
const query = 'Sales/refund';
|
||||
this.$http.post(query, params).then(res => {
|
||||
const refundTicket = res.data;
|
||||
|
|
|
@ -36,10 +36,10 @@ Warehouse: Almacen
|
|||
Agency: Agencia
|
||||
Shipped: F. envio
|
||||
Packaging: Encajado
|
||||
Refund: Abono
|
||||
Refund...: Abono...
|
||||
Promotion mana: Maná promoción
|
||||
Claim mana: Maná reclamación
|
||||
History: Historial
|
||||
Do you want to continue?: ¿Desea continuar?
|
||||
Claim out of time: Reclamación fuera de plazo
|
||||
Do you want to create a claim?: ¿Quieres crear una reclamación?
|
||||
Do you want to create a claim?: ¿Quieres crear una reclamación?
|
||||
|
|
Loading…
Reference in New Issue