2
0
mirror of https://github.com/frappe/books.git synced 2024-11-10 07:40:55 +00:00
books/reports/SalesRegister/SalesRegister.js
18alantom 27aed52044 incr: type some files, frappe -> fyo
- get books to serve albiet broken
- one step at a time
2022-05-23 16:18:22 +05:30

56 lines
1.3 KiB
JavaScript

import { fyo } from 'src/initFyo';
class SalesRegister {
async run({ fromDate, toDate, customer }) {
if (!fromDate && !toDate && !customer) return { rows: [] };
let filters = {};
if (customer) {
filters.customer = customer;
}
if (fromDate && toDate) {
filters.date = ['>=', fromDate, '<=', toDate];
} else if (fromDate) {
filters.date = ['>=', fromDate];
} else if (toDate) {
filters.date = ['<=', toDate];
}
const invoices = await fyo.db.getAll({
doctype: 'SalesInvoice',
fields: ['name', 'date', 'customer', 'account', 'netTotal', 'grandTotal'],
filters: filters,
orderBy: 'date',
order: 'desc',
});
const invoiceNames = invoices.map((d) => d.name);
const taxes = await fyo.db.getAll({
doctype: 'TaxSummary',
fields: ['parent', 'amount'],
filters: {
parenttype: 'Invoice',
parent: ['in', invoiceNames],
},
orderBy: 'name',
});
for (let invoice of invoices) {
invoice.totalTax = taxes
.filter((tax) => tax.parent === invoice.name)
.reduce((acc, tax) => {
if (tax.amount) {
acc = acc + tax.amount;
}
return acc;
}, 0);
}
return { rows: invoices };
}
}
export default SalesRegister;