3430-ticket_step-two ticket without negatives #823

Merged
joan merged 31 commits from 3430-ticket_step-two into dev 2022-02-01 08:34:41 +00:00
8 changed files with 25 additions and 25 deletions
Showing only changes of commit f8a0094321 - Show all commits

View File

@ -1,15 +1,15 @@
DROP PROCEDURE IF EXISTS `vn`.`ticket_getAdvanceable`;
DROP PROCEDURE IF EXISTS `vn`.`ticket_getMovable`;
DELIMITER $$
$$
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticket_getAdvanceable`(vTicketFk INT, vDatedNew DATETIME, vWarehouseFk INT)
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticket_getMovable`(vTicketFk INT, vDatedNew DATETIME, vWarehouseFk INT)
BEGIN
/**
* Cálcula el stock avanzable para los artículos de un ticket
* Cálcula el stock movible para los artículos de un ticket
*
* @param vTicketFk -> Ticket
* @param vDatedNew -> Nueva fecha
* @return Sales con Avanzable
* @return Sales con Movible
*/
DECLARE vDatedOld DATETIME;
@ -29,7 +29,7 @@ BEGIN
s.discount,
i.image,
i.subName,
il.stock + IFNULL(im.amount, 0) AS advanceable
il.stock + IFNULL(im.amount, 0) AS movable
FROM ticket t
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk

View File

@ -134,11 +134,11 @@ module.exports = Self => {
}
if (args.isWithoutNegatives) {
const query = `CALL ticket_getAdvanceable(?,?,?)`;
const query = `CALL ticket_getMovable(?,?,?)`;
const params = [args.id, args.shipped, args.warehouseFk];
const [salesAdvanceable] = await Self.rawSql(query, params, myOptions);
const [salesMovable] = await Self.rawSql(query, params, myOptions);
const salesNewTicket = salesAdvanceable.filter(sale => (sale.advanceable ?? 0) >= sale.quantity);
const salesNewTicket = salesMovable.filter(sale => (sale.movable ?? 0) >= sale.quantity);
if (salesNewTicket.length) {
const newTicket = await models.Ticket.transferSales(ctx, args.id, null, salesNewTicket, myOptions);
args.id = newTicket.id;

View File

@ -110,14 +110,14 @@ module.exports = Self => {
totalDifference: 0.00,
};
// Get items advanceable
let query = `CALL ticket_getAdvanceable(?,?,?)`;
// Get items movable
let query = `CALL ticket_getMovable(?,?,?)`;
let params = [args.id, args.shipped, args.warehouseId];
const [salesAdvanceable] = await Self.rawSql(query, params, myOptions);
const [salesMovable] = await Self.rawSql(query, params, myOptions);
const itemAdvanceable = new Map();
for (sale of salesAdvanceable)
itemAdvanceable.set(sale.id, sale.advanceable ?? 0);
const itemMovable = new Map();
for (sale of salesMovable)
itemMovable.set(sale.id, sale.movable ?? 0);
// Sale price component, one per sale
query = `CALL vn.ticket_priceDifference(?, ?, ?, ?, ?)`;
@ -142,7 +142,7 @@ module.exports = Self => {
salesObj.totalUnitPrice += sale.price;
salesObj.totalUnitPrice = round(salesObj.totalUnitPrice);
sale.advanceable = itemAdvanceable.get(sale.id);
sale.movable = itemMovable.get(sale.id);
}
if (tx) await tx.commit();

View File

@ -60,7 +60,7 @@ describe('sale priceDifference()', () => {
expect(error).toEqual(new UserError(`The sales of this ticket can't be modified`));
});
it('should return ticket advanceable', async() => {
it('should return ticket movable', async() => {
const tx = await models.Ticket.beginTransaction({});
try {
@ -83,8 +83,8 @@ describe('sale priceDifference()', () => {
const firstItem = result.items[0];
const secondtItem = result.items[1];
expect(firstItem.advanceable).toEqual(440);
expect(secondtItem.advanceable).toEqual(1980);
expect(firstItem.movable).toEqual(440);
expect(secondtItem.movable).toEqual(1980);
await tx.rollback();
} catch (e) {

View File

@ -9,7 +9,7 @@
<vn-tr>
<vn-th number>Item</vn-th>
<vn-th class="align-center">Description</vn-th>
<vn-th number>Advanceable</vn-th>
<vn-th number>Movable</vn-th>
<vn-th number>Quantity</vn-th>
<vn-th number>Price (PPU)</vn-th>
<vn-th number>New (PPU)</vn-th>
@ -35,8 +35,8 @@
<vn-td number>
<span
class="chip"
ng-class="{'alert': sale.quantity>sale.advanceable}">
{{::sale.advanceable}}
ng-class="{'alert': sale.quantity>sale.movable}">
{{::sale.movable}}
</span>
</vn-td>
<vn-td number>{{::sale.quantity}}</vn-td>

View File

@ -69,7 +69,7 @@ class Controller extends Component {
let haveNotNegatives = false;
this.ticket.sale.items.forEach(item => {
if (item.quantity > item.advanceable)
if (item.quantity > item.movable)
haveNegatives = true;
else
haveNotNegatives = true;

View File

@ -73,12 +73,12 @@ describe('Ticket', () => {
{
item: 1,
quantity: 2,
advanceable: 1
movable: 1
},
{
item: 2,
quantity: 1,
advanceable: 5
movable: 5
}
]
}

View File

@ -8,4 +8,4 @@ New price: Nuevo precio
Price difference: Diferencia de precio
Without create negatives: Sin crear negativos
alexm marked this conversation as resolved Outdated
Outdated
Review

Create without negatives

Create without negatives
Clone this ticket with the changes and only sales availables: Clona este ticket con los cambios y solo las ventas disponibles.
Advanceable: Avanzable
Movable: Movible