2
0
mirror of https://github.com/frappe/books.git synced 2024-11-08 14:50:56 +00:00

test: stock return

This commit is contained in:
akshayitzme 2023-07-01 15:33:34 +05:30
parent 6e3068dd60
commit 9a3a14bd51

View File

@ -12,6 +12,7 @@ import { Shipment } from '../Shipment';
import { StockTransfer } from '../StockTransfer'; import { StockTransfer } from '../StockTransfer';
import { ValuationMethod } from '../types'; import { ValuationMethod } from '../types';
import { getALEs, getItem, getSLEs, getStockTransfer } from './helpers'; import { getALEs, getItem, getSLEs, getStockTransfer } from './helpers';
import { PurchaseReceipt } from '../PurchaseReceipt';
const fyo = getTestFyo(); const fyo = getTestFyo();
setupTestFyo(fyo, __filename); setupTestFyo(fyo, __filename);
@ -585,4 +586,108 @@ test('Create Shipment from manually set Back Ref', async (t) => {
t.equal(sinv.stockNotTransferred, 0, 'stock has been transferred'); t.equal(sinv.stockNotTransferred, 0, 'stock has been transferred');
}); });
test('Create Shipment then create return against it', async (t) => {
const rate = testDocs.Item[item].rate as number;
const shpm = fyo.doc.getNewDoc(ModelNameEnum.Shipment) as Shipment;
await shpm.set({
party,
date: new Date('2023-05-18'),
items: [{ item, quantity: 3, rate }],
});
await shpm.sync();
await shpm.submit();
t.equal(shpm.name, 'SHPM-1006', 'Shipment created');
const shpmReturn = (await shpm.getReturnDoc()) as Shipment;
await shpmReturn.sync();
await shpmReturn.submit();
t.equal(shpmReturn.name, 'SHPM-1007', 'Shipment return created');
t.ok(
shpmReturn.grandTotal?.isNegative(),
'Shipment return doc has negative grand total '
);
const returnShpmAles = await fyo.db.getAllRaw(
ModelNameEnum.AccountingLedgerEntry,
{
fields: ['name', 'account', 'credit', 'debit'],
filters: { referenceName: shpmReturn.name! },
}
);
for (const ale of returnShpmAles) {
if (ale.account === 'Stock In Hand') {
t.equal(
fyo.pesa(ale.debit as string).float,
shpmReturn.grandTotal?.float,
`Shipment return amount debited from ${ale.account}`
);
}
if (ale.account === 'Cost of Goods Sold') {
t.equal(
fyo.pesa(ale.credit as string).float,
shpmReturn.grandTotal?.float,
`Shipment return amount credited to ${ale.account}`
);
}
}
});
test('Create Purchase Reciept then create return against it', async (t) => {
const rate = testDocs.Item[item].rate as number;
const prec = fyo.doc.getNewDoc(
ModelNameEnum.PurchaseReceipt
) as PurchaseReceipt;
await prec.set({
party,
date: new Date('2023-05-18'),
items: [{ item, quantity: 3, rate }],
});
await prec.sync();
await prec.submit();
t.equal(prec.name, 'PREC-1005', 'Purchase Receipt created');
const precReturn = (await prec.getReturnDoc()) as PurchaseReceipt;
await precReturn.sync();
await precReturn.submit();
t.equal(precReturn.name, 'PREC-1006', 'Purchase Receipt return created');
t.ok(
precReturn.grandTotal?.isNegative(),
'Purchase Receipt return doc has negative grand total '
);
const returnPrecAles = await fyo.db.getAllRaw(
ModelNameEnum.AccountingLedgerEntry,
{
fields: ['name', 'account', 'credit', 'debit'],
filters: { referenceName: precReturn.name! },
}
);
for (const ale of returnPrecAles) {
if (ale.account === 'Stock In Hand') {
t.equal(
fyo.pesa(ale.credit as string).float,
precReturn.grandTotal?.float,
`Purchase Receipt return amount credited to ${ale.account}`
);
}
if (ale.account === 'Stock Received But Not Billed') {
t.equal(
fyo.pesa(ale.debit as string).float,
precReturn.grandTotal?.float,
`Purchase Receipt return amount debited from ${ale.account}`
);
}
}
});
closeTestFyo(fyo, __filename); closeTestFyo(fyo, __filename);