feat: refs #7937 add ClaimConfig model and update refund ticket logic

This commit is contained in:
Javi Gallego 2025-01-09 12:33:20 +01:00
parent f9666b8e60
commit 190731899e
4 changed files with 115 additions and 19 deletions

View File

@ -0,0 +1,13 @@
ALTER TABLE `vn`.`claimConfig`
ADD COLUMN `pickupAgencyFk` INT(11) DEFAULT 6
COMMENT 'Agencia utilizada para las recogidas mediante agencia',
ADD COLUMN `pickupDeliveryFk` INT(11) DEFAULT 847
COMMENT 'Agencia utilizada para las recogidas mediante reparto',
ADD CONSTRAINT `fk_claimConfig_pickupAgencyFk`
FOREIGN KEY (`pickupAgencyFk`)
REFERENCES `agencyMode` (`id`),
ADD CONSTRAINT `fk_claimConfig_pickupdeliveryFk`
FOREIGN KEY (`pickupdeliveryFk`)
REFERENCES `agencyMode` (`id`);

View File

@ -82,31 +82,64 @@ module.exports = Self => {
where: {code: 'salesPerson'}
}, myOptions);
const agencyMode = await models.AgencyMode.findOne({
where: {code: 'refund'}
}, myOptions);
const state = await models.State.findOne({
where: {code: 'DELIVERED'}
}, myOptions);
const zone = await models.Zone.findOne({
where: {agencyModeFk: agencyMode.id}
}, myOptions);
const claim = await models.Claim.findOne(filter, myOptions);
const today = Date.vnNew();
let shipped;
let landed;
let warehouseFk;
let agencyModeFk;
let zoneFk;
let nickname;
let state;
if (claim.pickup === null) {
state = await models.State.findOne({
where: {code: 'DELIVERED'}
}, myOptions);
const agencyMode = await models.AgencyMode.findOne({
where: {code: 'refund'}
}, myOptions);
const zone = await models.Zone.findOne({
where: {agencyModeFk: agencyMode.id}
}, myOptions);
shipped = today;
landed = today;
warehouseFk = claim.ticket().warehouseFk;
agencyModeFk = agencyMode.id;
zoneFk = zone.id;
nickname = `Abono del: ${claim.ticketFk}`;
} else {
state = await models.State.findOne({
where: {code: 'WAITING_FOR_PICKUP'}
}, myOptions);
const warehouse = await models.Warehouse.findOne({
where: {code: 'rcl'}
}, myOptions);
warehouseFk = warehouse.id;
nickname = `Recogida pendiente del: ${claim.ticketFk}`;
zoneFk = zone.id;
const claimConfig = await models.claimConfig.findOne();
if (claim.pickup == 'delivery') {
shipped = today;
landed = today;
agencyModeFk = claimConfig.pickupDeliveryFk;
} else {
shipped = null;
landed = null;
agencyModeFk = claimConfig.pickupAgencyFk;
}
}
const newRefundTicket = await models.Ticket.create({
clientFk: claim.ticket().clientFk,
shipped: today,
landed: today,
nickname: `Abono del: ${claim.ticketFk}`,
warehouseFk: claim.ticket().warehouseFk,
shipped,
landed,
nickname,
warehouseFk,
companyFk: claim.ticket().companyFk,
addressFk: claim.ticket().addressFk,
agencyModeFk: agencyMode.id,
zoneFk: zone.id
agencyModeFk,
zoneFk
}, myOptions);
await models.TicketRefund.create({

View File

@ -2,6 +2,9 @@
"Claim": {
"dataSource": "vn"
},
"ClaimConfig": {
"dataSource": "vn"
},
"ClaimContainer": {
"dataSource": "claimStorage"
},
@ -43,5 +46,5 @@
},
"ClaimObservation": {
"dataSource": "vn"
}
}
}

View File

@ -0,0 +1,47 @@
{
"name": "ClaimConfig",
"base": "VnModel",
"mixins": {
"Loggable": true
},
"options": {
"mysql": {
"table": "claimConfig"
}
},
"properties": {
"id": {
"type": "number",
"id": true,
"description": "Identifier"
},
"maxResponsibility": {
"type": "number"
},
"monthsToRefund": {
"type": "number"
},
"minShipped": {
"type": "date"
},
"pickupAgencyFk": {
"type": "number"
},
"pickupdeliveryFk": {
"type": "number"
}
},
"relations": {
"pickupAgency": {
"type": "belongsTo",
"model": "AgencyMode",
"foreignKey": "pickupAgencyFk"
},
"pickupDelivery": {
"type": "belongsTo",
"model": "AgencyMode",
"foreignKey": "pickupdeliveryFk"
}
}
}