feat: refs #7937 add warehouse and pickup agency fields to ClaimConfig model and update related logic
This commit is contained in:
parent
190731899e
commit
0f83549651
|
@ -1940,9 +1940,9 @@ INSERT INTO `vn`.`claimEnd`(`id`, `saleFk`, `claimFk`, `workerFk`, `claimDestina
|
|||
(1, 31, 4, 21, 2),
|
||||
(2, 32, 3, 21, 3);
|
||||
|
||||
INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`, `monthsToRefund`, `minShipped`)
|
||||
INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`, `monthsToRefund`, `minShipped`, `pickupAgencyFk`, `pickupDeliveryFk`, `warehouseFk`)
|
||||
VALUES
|
||||
(1, 5, 4, '2016-10-01');
|
||||
(1, 5, 4, '2016-10-01', 1, 8, 4);
|
||||
|
||||
INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`)
|
||||
VALUES
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
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 COLUMN `pickupAgencyFk` INT(11)
|
||||
COMMENT 'Agencia utilizada para las recogidas mediante agencia',
|
||||
ADD COLUMN `pickupDeliveryFk` INT(11)
|
||||
COMMENT 'Agencia utilizada para las recogidas mediante reparto',
|
||||
ADD COLUMN `warehouseFk` smallint(6) unsigned
|
||||
COMMENT 'Almacén usado para los tickets de reclamaciones',
|
||||
|
||||
ADD CONSTRAINT `fk_claimConfig_pickupAgencyFk`
|
||||
FOREIGN KEY (`pickupAgencyFk`)
|
||||
REFERENCES `agencyMode` (`id`),
|
||||
ADD CONSTRAINT `fk_claimConfig_pickupAgencyFk`
|
||||
FOREIGN KEY (`pickupAgencyFk`)
|
||||
REFERENCES `agencyMode` (`id`),
|
||||
|
||||
ADD CONSTRAINT `fk_claimConfig_pickupdeliveryFk`
|
||||
FOREIGN KEY (`pickupdeliveryFk`)
|
||||
REFERENCES `agencyMode` (`id`),
|
||||
|
||||
ADD CONSTRAINT `fk_claimConfig_warehouseFk`
|
||||
FOREIGN KEY (`warehouseFk`)
|
||||
REFERENCES `warehouse` (`id`);
|
||||
|
||||
ADD CONSTRAINT `fk_claimConfig_pickupdeliveryFk`
|
||||
FOREIGN KEY (`pickupdeliveryFk`)
|
||||
REFERENCES `agencyMode` (`id`);
|
||||
|
|
|
@ -251,4 +251,4 @@
|
|||
"Price cannot be blank": "Price cannot be blank",
|
||||
"There are tickets to be invoiced": "There are tickets to be invoiced",
|
||||
"The address of the customer must have information about Incoterms and Customs Agent": "The address of the customer must have information about Incoterms and Customs Agent"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,19 +78,17 @@ module.exports = Self => {
|
|||
where: {id: userId}
|
||||
}, myOptions);
|
||||
|
||||
const obsevationType = await models.ObservationType.findOne({
|
||||
const observationSalesPerson = await models.ObservationType.findOne({
|
||||
where: {code: 'salesPerson'}
|
||||
}, 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;
|
||||
let discountValue = null;
|
||||
|
||||
if (claim.pickup === null) {
|
||||
state = await models.State.findOne({
|
||||
|
@ -99,49 +97,47 @@ module.exports = Self => {
|
|||
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 {
|
||||
const claimConfig = await models.ClaimConfig.findOne();
|
||||
|
||||
discountValue = 100;
|
||||
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;
|
||||
warehouseFk = claimConfig.warehouseFk;
|
||||
if (claim.pickup == 'delivery')
|
||||
agencyModeFk = claimConfig.pickupDeliveryFk;
|
||||
} else {
|
||||
shipped = null;
|
||||
landed = null;
|
||||
else
|
||||
agencyModeFk = claimConfig.pickupAgencyFk;
|
||||
}
|
||||
}
|
||||
const newRefundTicket = await models.Ticket.create({
|
||||
clientFk: claim.ticket().clientFk,
|
||||
shipped,
|
||||
landed,
|
||||
shipped: await getNextShipped(today, claim.ticket().addressFk, agencyModeFk, warehouseFk, myOptions),
|
||||
landed: null,
|
||||
nickname,
|
||||
warehouseFk,
|
||||
companyFk: claim.ticket().companyFk,
|
||||
addressFk: claim.ticket().addressFk,
|
||||
agencyModeFk,
|
||||
zoneFk
|
||||
zoneFk: null
|
||||
}, myOptions);
|
||||
|
||||
if (claim.pickup == 'pickup') {
|
||||
const observationDelivery =
|
||||
await models.ObservationType.findOne({where: {code: 'delivery'}}, myOptions);
|
||||
|
||||
await saveObservation({
|
||||
description: `recoger reclamación: ${claim.id}`,
|
||||
ticketFk: newRefundTicket.id,
|
||||
observationTypeFk: observationDelivery.id
|
||||
}, myOptions);
|
||||
}
|
||||
await models.TicketRefund.create({
|
||||
refundTicketFk: newRefundTicket.id,
|
||||
originalTicketFk: claim.ticket().id
|
||||
|
@ -150,7 +146,7 @@ module.exports = Self => {
|
|||
await saveObservation({
|
||||
description: `Reclama ticket: ${claim.ticketFk}`,
|
||||
ticketFk: newRefundTicket.id,
|
||||
observationTypeFk: obsevationType.id
|
||||
observationTypeFk: observationSalesPerson.id
|
||||
}, myOptions);
|
||||
|
||||
await models.Ticket.state(ctx, {
|
||||
|
@ -160,7 +156,7 @@ module.exports = Self => {
|
|||
}, myOptions);
|
||||
|
||||
const salesToRefund = await models.ClaimBeginning.find(salesFilter, myOptions);
|
||||
const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, myOptions);
|
||||
const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, discountValue, myOptions);
|
||||
await insertIntoClaimEnd(createdSales, id, worker.id, myOptions);
|
||||
|
||||
await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [
|
||||
|
@ -176,7 +172,7 @@ module.exports = Self => {
|
|||
}
|
||||
};
|
||||
|
||||
async function addSalesToTicket(salesToRefund, ticketId, options) {
|
||||
async function addSalesToTicket(salesToRefund, ticketId, discountValue, options) {
|
||||
let formatedSales = [];
|
||||
salesToRefund.forEach(sale => {
|
||||
let formatedSale = {
|
||||
|
@ -185,7 +181,7 @@ module.exports = Self => {
|
|||
concept: sale.sale().concept,
|
||||
quantity: -Math.abs(sale.quantity),
|
||||
price: sale.sale().price,
|
||||
discount: sale.sale().discount,
|
||||
discount: discountValue ?? sale.sale().discount,
|
||||
reserved: sale.sale().reserved,
|
||||
isPicked: sale.sale().isPicked,
|
||||
created: sale.sale().created
|
||||
|
@ -218,4 +214,17 @@ module.exports = Self => {
|
|||
observation.description
|
||||
], options);
|
||||
}
|
||||
|
||||
async function getNextShipped(vLanded, vAddressFk, vAgencyModeFk, warehouseFk, options) {
|
||||
await Self.rawSql(
|
||||
'CALL vn.zone_getShipped(?, ?, ?, TRUE)', [vLanded, vAddressFk, vAgencyModeFk], options);
|
||||
|
||||
try {
|
||||
const [resultSet] = await Self.rawSql(
|
||||
'SELECT shipped FROM tmp.zoneGetShipped WHERE warehouseFk = ?', [warehouseFk], options);
|
||||
return resultSet.shipped;
|
||||
} catch (error) {
|
||||
return Date.vnNew();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
},
|
||||
"pickupdeliveryFk": {
|
||||
"type": "number"
|
||||
},
|
||||
"warehouseFk": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
|
|
Loading…
Reference in New Issue