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:
parent
6e3068dd60
commit
9a3a14bd51
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user