2
0
mirror of https://github.com/frappe/books.git synced 2025-01-02 22:50:14 +00:00

test: import from csv

- add check links
This commit is contained in:
18alantom 2023-02-14 13:34:22 +05:30
parent b08c128c45
commit 8e8e88d49f
6 changed files with 188 additions and 25 deletions

View File

@ -106,11 +106,73 @@ export class Importer {
}); });
} }
pushFromValueMatrixToDocs() { selectFile(data: string): boolean {
try {
const parsed = parseCSV(data);
this.selectParsed(parsed);
} catch {
return false;
}
return true;
}
async checkLinks() {
const tfKeys = this.assignedTemplateFields
.map((key, index) => ({
key,
index,
tf: this.templateFieldsMap.get(key ?? ''),
}))
.filter(({ key, tf }) => {
if (!key || !tf) {
return false;
}
return tf.fieldtype === FieldTypeEnum.Link;
}) as { key: string; index: number; tf: TemplateField }[];
const linksNames: Map<string, Set<string>> = new Map();
for (const row of this.valueMatrix) {
for (const { tf, index } of tfKeys) {
const target = (tf as TargetField).target;
const value = row[index]?.value;
if (typeof value !== 'string' || !value) {
continue;
}
if (!linksNames.has(target)) {
linksNames.set(target, new Set());
}
linksNames.get(target)?.add(value);
}
}
const doesNotExist = [];
for (const [target, values] of linksNames.entries()) {
for (const value of values) {
const exists = await this.fyo.db.exists(target, value);
if (exists) {
continue;
}
doesNotExist.push({
schemaName: target,
schemaLabel: this.fyo.schemaMap[this.schemaName]?.label,
name: value,
});
}
}
return doesNotExist;
}
populateDocs() {
const { dataMap, childTableMap } = const { dataMap, childTableMap } =
this.getDataAndChildTableMapFromValueMatrix(); this.getDataAndChildTableMapFromValueMatrix();
const schema = this.fyo.db.schemaMap[this.schemaName]; const schema = this.fyo.schemaMap[this.schemaName];
const targetFieldnameMap = schema?.fields const targetFieldnameMap = schema?.fields
.filter((f) => f.fieldtype === FieldTypeEnum.Table) .filter((f) => f.fieldtype === FieldTypeEnum.Table)
.reduce((acc, f) => { .reduce((acc, f) => {
@ -171,7 +233,7 @@ export class Importer {
for (const i in this.valueMatrix) { for (const i in this.valueMatrix) {
const row = this.valueMatrix[i]; const row = this.valueMatrix[i];
const name = row[nameIndex].value; const name = row[nameIndex]?.value;
if (typeof name !== 'string') { if (typeof name !== 'string') {
continue; continue;
} }
@ -199,7 +261,7 @@ export class Importer {
} }
const childNameIndex = nameIndices[tf.schemaName]; const childNameIndex = nameIndices[tf.schemaName];
let childName = row[childNameIndex].value; let childName = row[childNameIndex]?.value;
if (typeof childName !== 'string') { if (typeof childName !== 'string') {
childName = `${tf.schemaName}-${i}`; childName = `${tf.schemaName}-${i}`;
} }
@ -224,17 +286,6 @@ export class Importer {
return { dataMap, childTableMap }; return { dataMap, childTableMap };
} }
selectFile(data: string): boolean {
try {
const parsed = parseCSV(data);
this.selectParsed(parsed);
} catch {
return false;
}
return true;
}
selectParsed(parsed: string[][]): void { selectParsed(parsed: string[][]): void {
if (!parsed?.length) { if (!parsed?.length) {
return; return;
@ -337,6 +388,11 @@ export class Importer {
return vmi; return vmi;
} }
if (vmi.rawValue === '') {
vmi.value = null;
return vmi;
}
try { try {
vmi.value = Converter.toDocValue(rawValue, tf, this.fyo); vmi.value = Converter.toDocValue(rawValue, tf, this.fyo);
} catch { } catch {
@ -437,7 +493,12 @@ function getTemplateFields(
} }
for (const field of schema.fields) { for (const field of schema.fields) {
if (field.computed || field.meta || field.hidden) { if (
field.computed ||
field.meta ||
field.hidden ||
(field.readOnly && !field.required)
) {
continue; continue;
} }
@ -453,12 +514,10 @@ function getTemplateFields(
continue; continue;
} }
if (field.readOnly && field.required) { const tf = { ...field };
field.readOnly = false;
}
if (field.readOnly) { if (tf.readOnly) {
continue; tf.readOnly = false;
} }
const schemaName = schema.name; const schemaName = schema.name;
@ -466,7 +525,7 @@ function getTemplateFields(
const fieldKey = `${schema.name}.${field.fieldname}`; const fieldKey = `${schema.name}.${field.fieldname}`;
fields.push({ fields.push({
...field, ...tf,
schemaName, schemaName,
schemaLabel, schemaLabel,
fieldKey, fieldKey,

View File

@ -676,7 +676,7 @@ export default defineComponent({
return; return;
} }
this.importer.pushFromValueMatrixToDocs(); this.importer.populateDocs();
let doneCount = 0; let doneCount = 0;
for (const doc of this.importer.docs) { for (const doc of this.importer.docs) {

13
tests/items.csv Normal file
View File

@ -0,0 +1,13 @@
"Item Name",Description,"Unit Type",Type,For,"Sales Acc.","Purchase Acc.",Tax,Rate,HSN/SAC,Barcode,"Track Item","Created By","Modified By",Created,Modified
Item.name,Item.description,Item.unit,Item.itemType,Item.for,Item.incomeAccount,Item.expenseAccount,Item.tax,Item.rate,Item.hsnCode,Item.barcode,Item.trackItem,Item.createdBy,Item.modifiedBy,Item.created,Item.modified
"Final Item","A final item made from raw items",Unit,Product,Both,Sales,"Stock Received But Not Billed",,500,0,,1,lin@to.co,lin@to.co,2023-01-31T06:46:00.200Z,2023-01-31T06:46:00.200Z
"Raw Two","Another Raw item used to make a final item",Unit,Product,Both,Sales,"Stock Received But Not Billed",,200,0,,1,lin@to.co,lin@to.co,2023-01-31T06:45:32.449Z,2023-01-31T06:45:32.449Z
"Raw One","A raw item used to make a final item.",Unit,Product,Both,Sales,"Stock Received But Not Billed",,100,0,,1,lin@to.co,lin@to.co,2023-01-31T06:44:58.047Z,2023-01-31T06:44:58.047Z
"Test One",,Unit,Product,Both,Sales,"Stock Received But Not Billed",GST-18,200,0,,1,lin@to.co,lin@to.co,2023-01-09T10:46:02.217Z,2023-01-09T10:46:02.217Z
Stuff,"Some stuff.",Unit,Product,Both,Sales,"Stock Received But Not Billed",GST-18,200,101192,,1,lin@to.co,lin@to.co,2023-01-09T07:14:12.208Z,2023-01-09T07:14:12.208Z
"Something Sellable",,Unit,Product,Sales,Sales,"Cost of Goods Sold",,300,0,,0,lin@to.co,lin@to.co,2022-10-11T09:15:15.724Z,2023-01-16T08:49:49.267Z
Ball,"Just a ball..",Unit,Product,Both,Sales,"Cost of Goods Sold",,30,0,,0,Administrator,Administrator,2022-02-24T04:38:09.181Z,2022-02-24T04:38:09.181Z
Bat,"Regular old bat...",Unit,Product,Both,Sales,"Cost of Goods Sold",,129,0,,0,Administrator,Administrator,2022-02-24T04:38:09.174Z,2022-02-24T04:38:09.174Z
"Holy Icon","The holiest of icons.",Unit,Product,Both,Sales,"Cost of Goods Sold",GST-3,330,0,,0,Administrator,Administrator,2022-02-11T11:32:33.342Z,2022-02-11T11:32:33.342Z
"Flower Pot","Just a flower pot.",Unit,Product,Both,Sales,"Cost of Goods Sold",GST-12,200,,,0,Administrator,Administrator,2021-12-16T07:04:08.233Z,2021-12-16T07:04:08.233Z
Flow,"Used to test the flow of operations.",Unit,Product,Both,Sales,"Cost of Goods Sold",GST-12,100,,,0,Administrator,Administrator,2021-12-16T05:42:02.081Z,2021-12-16T05:48:48.203Z
1 Item Name Description Unit Type Type For Sales Acc. Purchase Acc. Tax Rate HSN/SAC Barcode Track Item Created By Modified By Created Modified
2 Item.name Item.description Item.unit Item.itemType Item.for Item.incomeAccount Item.expenseAccount Item.tax Item.rate Item.hsnCode Item.barcode Item.trackItem Item.createdBy Item.modifiedBy Item.created Item.modified
3 Final Item A final item made from raw items Unit Product Both Sales Stock Received But Not Billed 500 0 1 lin@to.co lin@to.co 2023-01-31T06:46:00.200Z 2023-01-31T06:46:00.200Z
4 Raw Two Another Raw item used to make a final item Unit Product Both Sales Stock Received But Not Billed 200 0 1 lin@to.co lin@to.co 2023-01-31T06:45:32.449Z 2023-01-31T06:45:32.449Z
5 Raw One A raw item used to make a final item. Unit Product Both Sales Stock Received But Not Billed 100 0 1 lin@to.co lin@to.co 2023-01-31T06:44:58.047Z 2023-01-31T06:44:58.047Z
6 Test One Unit Product Both Sales Stock Received But Not Billed GST-18 200 0 1 lin@to.co lin@to.co 2023-01-09T10:46:02.217Z 2023-01-09T10:46:02.217Z
7 Stuff Some stuff. Unit Product Both Sales Stock Received But Not Billed GST-18 200 101192 1 lin@to.co lin@to.co 2023-01-09T07:14:12.208Z 2023-01-09T07:14:12.208Z
8 Something Sellable Unit Product Sales Sales Cost of Goods Sold 300 0 0 lin@to.co lin@to.co 2022-10-11T09:15:15.724Z 2023-01-16T08:49:49.267Z
9 Ball Just a ball.. Unit Product Both Sales Cost of Goods Sold 30 0 0 Administrator Administrator 2022-02-24T04:38:09.181Z 2022-02-24T04:38:09.181Z
10 Bat Regular old bat... Unit Product Both Sales Cost of Goods Sold 129 0 0 Administrator Administrator 2022-02-24T04:38:09.174Z 2022-02-24T04:38:09.174Z
11 Holy Icon The holiest of icons. Unit Product Both Sales Cost of Goods Sold GST-3 330 0 0 Administrator Administrator 2022-02-11T11:32:33.342Z 2022-02-11T11:32:33.342Z
12 Flower Pot Just a flower pot. Unit Product Both Sales Cost of Goods Sold GST-12 200 0 Administrator Administrator 2021-12-16T07:04:08.233Z 2021-12-16T07:04:08.233Z
13 Flow Used to test the flow of operations. Unit Product Both Sales Cost of Goods Sold GST-12 100 0 Administrator Administrator 2021-12-16T05:42:02.081Z 2021-12-16T05:48:48.203Z

8
tests/parties.csv Normal file
View File

@ -0,0 +1,8 @@
Name,Role,"Default Account","Outstanding Amount",Currency,Email,Phone,Address,"GSTIN No.","GST Registration","Created By","Modified By",Created,Modified
Party.name,Party.role,Party.defaultAccount,Party.outstandingAmount,Party.currency,Party.email,Party.phone,Party.address,Party.gstin,Party.gstType,Party.createdBy,Party.modifiedBy,Party.created,Party.modified
Randoe,Both,,259.6,INR,,,,,Unregistered,lin@to.co,lin@to.co,2023-01-09T04:58:16.050Z,2023-01-09T10:46:46.128Z
Saipan,Customer,Debtors,299.99999999921,USD,sai@pan.co,,,,Unregistered,lin@to.co,lin@to.co,2022-07-18T17:07:35.103Z,2023-01-30T14:36:50.058Z
Lordham,Customer,Debtors,851.8,INR,lo@gamil.com,8989004444,,,Unregistered,Administrator,lin@to.co,2022-02-04T06:35:19.404Z,2022-07-18T17:05:42.976Z
Lyn,Customer,Debtors,100,INR,lyn@to.co,,,,Consumer,Administrator,Administrator,2022-02-04T06:21:19.069Z,2022-02-28T05:18:32.743Z
Bølèn,Customer,Debtors,0,INR,bo@len.co,,,22ABCIK123401Z5,"Registered Regular",Administrator,Administrator,2022-01-12T08:44:58.879Z,2022-01-12T08:45:26.714Z
Bé,Customer,Debtors,46,INR,bey@more.tips,6969969600,,,Consumer,Administrator,Administrator,2021-12-16T11:32:11.595Z,2021-12-16T12:00:28.558Z
1 Name Role Default Account Outstanding Amount Currency Email Phone Address GSTIN No. GST Registration Created By Modified By Created Modified
2 Party.name Party.role Party.defaultAccount Party.outstandingAmount Party.currency Party.email Party.phone Party.address Party.gstin Party.gstType Party.createdBy Party.modifiedBy Party.created Party.modified
3 Randoe Both 259.6 INR Unregistered lin@to.co lin@to.co 2023-01-09T04:58:16.050Z 2023-01-09T10:46:46.128Z
4 Saipan Customer Debtors 299.99999999921 USD sai@pan.co Unregistered lin@to.co lin@to.co 2022-07-18T17:07:35.103Z 2023-01-30T14:36:50.058Z
5 Lordham Customer Debtors 851.8 INR lo@gamil.com 8989004444 Unregistered Administrator lin@to.co 2022-02-04T06:35:19.404Z 2022-07-18T17:05:42.976Z
6 Lyn Customer Debtors 100 INR lyn@to.co Consumer Administrator Administrator 2022-02-04T06:21:19.069Z 2022-02-28T05:18:32.743Z
7 Bølèn Customer Debtors 0 INR bo@len.co 22ABCIK123401Z5 Registered Regular Administrator Administrator 2022-01-12T08:44:58.879Z 2022-01-12T08:45:26.714Z
8 Customer Debtors 46 INR bey@more.tips 6969969600 Consumer Administrator Administrator 2021-12-16T11:32:11.595Z 2021-12-16T12:00:28.558Z

30
tests/sales_invoices.csv Normal file
View File

@ -0,0 +1,30 @@
"Invoice No",Date,Party,Account,"Customer Currency","Exchange Rate","Net Total","Grand Total","Base Grand Total","Outstanding Amount","Set Discount Amount","Discount Amount","Discount Percent","Discount After Tax","Entry Currency",Notes,"Stock Not Transferred","Number Series","Created By","Modified By",Created,Modified,Submitted,Cancelled,"Tax Account",Rate,Amount,Item,Description,Quantity,Rate,Account,Tax,Amount,"Set Discount Amount","Discount Amount","Discount Percent",HSN/SAC,"Stock Not Transferred"
SalesInvoice.name,SalesInvoice.date,SalesInvoice.party,SalesInvoice.account,SalesInvoice.currency,SalesInvoice.exchangeRate,SalesInvoice.netTotal,SalesInvoice.grandTotal,SalesInvoice.baseGrandTotal,SalesInvoice.outstandingAmount,SalesInvoice.setDiscountAmount,SalesInvoice.discountAmount,SalesInvoice.discountPercent,SalesInvoice.discountAfterTax,SalesInvoice.entryCurrency,SalesInvoice.terms,SalesInvoice.stockNotTransferred,SalesInvoice.numberSeries,SalesInvoice.createdBy,SalesInvoice.modifiedBy,SalesInvoice.created,SalesInvoice.modified,SalesInvoice.submitted,SalesInvoice.cancelled,TaxSummary.account,TaxSummary.rate,TaxSummary.amount,SalesInvoiceItem.item,SalesInvoiceItem.description,SalesInvoiceItem.quantity,SalesInvoiceItem.rate,SalesInvoiceItem.account,SalesInvoiceItem.tax,SalesInvoiceItem.amount,SalesInvoiceItem.setItemDiscountAmount,SalesInvoiceItem.itemDiscountAmount,SalesInvoiceItem.itemDiscountPercent,SalesInvoiceItem.hsnCode,SalesInvoiceItem.stockNotTransferred
1020,2023-01-31,Lordham,Debtors,INR,1,500,500,500,500,0,0,0,0,Party,,1,SINV-,lin@to.co,lin@to.co,2023-01-31T09:00:45.858Z,2023-01-31T09:00:45.858Z,0,0,,,,"Final Item","A final item made from raw items",1,500,Sales,,500,0,0,0,0,1
1019,2023-01-09,Randoe,Debtors,INR,1,220,259.6,259.6,259.6,0,0,0,0,Party,,1,SINV-,lin@to.co,lin@to.co,2023-01-09T10:46:40.923Z,2023-01-09T10:46:46.085Z,1,0,CGST,9,19.8,,,,,,,,,,,,
1019,2023-01-09,Randoe,Debtors,INR,1,220,259.6,259.6,259.6,0,0,0,0,Party,,1,SINV-,lin@to.co,lin@to.co,2023-01-09T10:46:40.923Z,2023-01-09T10:46:46.085Z,1,0,SGST,9,19.8,,,,,,,,,,,,
1019,2023-01-09,Randoe,Debtors,INR,1,220,259.6,259.6,259.6,0,0,0,0,Party,,1,SINV-,lin@to.co,lin@to.co,2023-01-09T10:46:40.923Z,2023-01-09T10:46:46.085Z,1,0,,,,"Test One",,1,220,Sales,GST-18,220,0,0,0,0,1
1018,2022-10-11,Saipan,Debtors,USD,82.47,3.63768643142,3.63768643142,299.99999999921,299.99999999921,0,0,0,0,Party,,0,SINV-,lin@to.co,lin@to.co,2022-10-11T09:16:50.373Z,2023-01-30T14:36:50.021Z,1,0,,,,"Something Sellable",,1,3.63768643142,Sales,,3.63768643142,0,0,0,0,0
1014,2022-07-11,Lordham,Debtors,INR,1,660,679.8,679.8,679.8,0,0,,0,Party,,,SINV-,lin@to.co,lin@to.co,2022-07-11T11:06:18.788Z,2022-07-18T17:05:42.922Z,1,0,CGST,1.5,9.9,,,,,,,,,,,,
1014,2022-07-11,Lordham,Debtors,INR,1,660,679.8,679.8,679.8,0,0,,0,Party,,,SINV-,lin@to.co,lin@to.co,2022-07-11T11:06:18.788Z,2022-07-18T17:05:42.922Z,1,0,SGST,1.5,9.9,,,,,,,,,,,,
1014,2022-07-11,Lordham,Debtors,INR,1,660,679.8,679.8,679.8,0,0,,0,Party,,,SINV-,lin@to.co,lin@to.co,2022-07-11T11:06:18.788Z,2022-07-18T17:05:42.922Z,1,0,,,,"Holy Icon","The holiest of icons.",2,330,Sales,GST-3,660,0,0,,0,
1011,2022-02-22,Lyn,Debtors,INR,1,1410,1471.2,1471.2,100,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.656Z,2022-02-28T05:18:32.731Z,1,0,SGST,1.5,30.6,,,,,,,,,,,,
1011,2022-02-22,Lyn,Debtors,INR,1,1410,1471.2,1471.2,100,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.656Z,2022-02-28T05:18:32.731Z,1,0,CGST,1.5,30.6,,,,,,,,,,,,
1011,2022-02-22,Lyn,Debtors,INR,1,1410,1471.2,1471.2,100,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.656Z,2022-02-28T05:18:32.731Z,1,0,,,,"Flower Pot","Just a flower pot.",1,210,Sales,GST-12,210,0,0,,,
1011,2022-02-22,Lyn,Debtors,INR,1,1410,1471.2,1471.2,100,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.656Z,2022-02-28T05:18:32.731Z,1,0,,,,"Holy Icon","The holiest of icons.",3,400,Sales,GST-3,1200,0,0,,0,
1012,2022-02-20,Lordham,Debtors,INR,1,2230,2353.6,2353.6,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.685Z,2022-02-28T05:18:11.657Z,1,0,SGST,1.5,61.8,,,,,,,,,,,,
1012,2022-02-20,Lordham,Debtors,INR,1,2230,2353.6,2353.6,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.685Z,2022-02-28T05:18:11.657Z,1,0,CGST,1.5,61.8,,,,,,,,,,,,
1012,2022-02-20,Lordham,Debtors,INR,1,2230,2353.6,2353.6,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.685Z,2022-02-28T05:18:11.657Z,1,0,,,,"Flower Pot","Just a flower pot.",3,210,Sales,GST-12,630,0,0,,,
1012,2022-02-20,Lordham,Debtors,INR,1,2230,2353.6,2353.6,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-24T05:07:23.685Z,2022-02-28T05:18:11.657Z,1,0,,,,"Holy Icon","The holiest of icons.",4,400,Sales,GST-3,1600,0,0,,0,
1008,2022-02-11,Lordham,Debtors,INR,1,600,672,672,172,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-11T08:40:28.193Z,2022-02-11T09:48:18.274Z,1,0,SGST,6,36,,,,,,,,,,,,
1008,2022-02-11,Lordham,Debtors,INR,1,600,672,672,172,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-11T08:40:28.193Z,2022-02-11T09:48:18.274Z,1,0,CGST,6,36,,,,,,,,,,,,
1008,2022-02-11,Lordham,Debtors,INR,1,600,672,672,172,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-11T08:40:28.193Z,2022-02-11T09:48:18.274Z,1,0,,,,"Flower Pot","Just a flower pot.",3,200,Sales,GST-12,600,0,0,,,
1007,2022-02-04,Lyn,Debtors,INR,1,200,224,224,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-04T06:21:24.058Z,2022-02-04T06:21:46.308Z,1,0,SGST,6,12,,,,,,,,,,,,
1007,2022-02-04,Lyn,Debtors,INR,1,200,224,224,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-04T06:21:24.058Z,2022-02-04T06:21:46.308Z,1,0,CGST,6,12,,,,,,,,,,,,
1007,2022-02-04,Lyn,Debtors,INR,1,200,224,224,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-02-04T06:21:24.058Z,2022-02-04T06:21:46.308Z,1,0,,,,"Flower Pot","Just a flower pot.",1,200,Sales,GST-12,200,0,0,,,
1004,2022-01-12,Bølèn,Debtors,INR,1,1800,2016,2016,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-01-12T08:45:19.774Z,2022-01-12T08:45:26.702Z,1,0,SGST,6,108,,,,,,,,,,,,
1004,2022-01-12,Bølèn,Debtors,INR,1,1800,2016,2016,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-01-12T08:45:19.774Z,2022-01-12T08:45:26.702Z,1,0,CGST,6,108,,,,,,,,,,,,
1004,2022-01-12,Bølèn,Debtors,INR,1,1800,2016,2016,0,0,0,,0,Party,,,SINV-,Administrator,Administrator,2022-01-12T08:45:19.774Z,2022-01-12T08:45:26.702Z,1,0,,,,"Flower Pot","Just a flower pot.",9,200,Sales,GST-12,1800,0,0,,,
1001,2021-12-16,Bé,Debtors,INR,1,100,112,112,46,0,0,,0,Party,,,SINV-,Administrator,Administrator,2021-12-16T11:34:06.174Z,2021-12-16T12:00:28.526Z,1,0,SGST,6,6,,,,,,,,,,,,
1001,2021-12-16,Bé,Debtors,INR,1,100,112,112,46,0,0,,0,Party,,,SINV-,Administrator,Administrator,2021-12-16T11:34:06.174Z,2021-12-16T12:00:28.526Z,1,0,CGST,6,6,,,,,,,,,,,,
1001,2021-12-16,Bé,Debtors,INR,1,100,112,112,46,0,0,,0,Party,,,SINV-,Administrator,Administrator,2021-12-16T11:34:06.174Z,2021-12-16T12:00:28.526Z,1,0,,,,Flow,"Used to test the flow of operations.",1,100,Sales,GST-12,100,0,0,,,
1 Invoice No Date Party Account Customer Currency Exchange Rate Net Total Grand Total Base Grand Total Outstanding Amount Set Discount Amount Discount Amount Discount Percent Discount After Tax Entry Currency Notes Stock Not Transferred Number Series Created By Modified By Created Modified Submitted Cancelled Tax Account Rate Amount Item Description Quantity Rate Account Tax Amount Set Discount Amount Discount Amount Discount Percent HSN/SAC Stock Not Transferred
2 SalesInvoice.name SalesInvoice.date SalesInvoice.party SalesInvoice.account SalesInvoice.currency SalesInvoice.exchangeRate SalesInvoice.netTotal SalesInvoice.grandTotal SalesInvoice.baseGrandTotal SalesInvoice.outstandingAmount SalesInvoice.setDiscountAmount SalesInvoice.discountAmount SalesInvoice.discountPercent SalesInvoice.discountAfterTax SalesInvoice.entryCurrency SalesInvoice.terms SalesInvoice.stockNotTransferred SalesInvoice.numberSeries SalesInvoice.createdBy SalesInvoice.modifiedBy SalesInvoice.created SalesInvoice.modified SalesInvoice.submitted SalesInvoice.cancelled TaxSummary.account TaxSummary.rate TaxSummary.amount SalesInvoiceItem.item SalesInvoiceItem.description SalesInvoiceItem.quantity SalesInvoiceItem.rate SalesInvoiceItem.account SalesInvoiceItem.tax SalesInvoiceItem.amount SalesInvoiceItem.setItemDiscountAmount SalesInvoiceItem.itemDiscountAmount SalesInvoiceItem.itemDiscountPercent SalesInvoiceItem.hsnCode SalesInvoiceItem.stockNotTransferred
3 1020 2023-01-31 Lordham Debtors INR 1 500 500 500 500 0 0 0 0 Party 1 SINV- lin@to.co lin@to.co 2023-01-31T09:00:45.858Z 2023-01-31T09:00:45.858Z 0 0 Final Item A final item made from raw items 1 500 Sales 500 0 0 0 0 1
4 1019 2023-01-09 Randoe Debtors INR 1 220 259.6 259.6 259.6 0 0 0 0 Party 1 SINV- lin@to.co lin@to.co 2023-01-09T10:46:40.923Z 2023-01-09T10:46:46.085Z 1 0 CGST 9 19.8
5 1019 2023-01-09 Randoe Debtors INR 1 220 259.6 259.6 259.6 0 0 0 0 Party 1 SINV- lin@to.co lin@to.co 2023-01-09T10:46:40.923Z 2023-01-09T10:46:46.085Z 1 0 SGST 9 19.8
6 1019 2023-01-09 Randoe Debtors INR 1 220 259.6 259.6 259.6 0 0 0 0 Party 1 SINV- lin@to.co lin@to.co 2023-01-09T10:46:40.923Z 2023-01-09T10:46:46.085Z 1 0 Test One 1 220 Sales GST-18 220 0 0 0 0 1
7 1018 2022-10-11 Saipan Debtors USD 82.47 3.63768643142 3.63768643142 299.99999999921 299.99999999921 0 0 0 0 Party 0 SINV- lin@to.co lin@to.co 2022-10-11T09:16:50.373Z 2023-01-30T14:36:50.021Z 1 0 Something Sellable 1 3.63768643142 Sales 3.63768643142 0 0 0 0 0
8 1014 2022-07-11 Lordham Debtors INR 1 660 679.8 679.8 679.8 0 0 0 Party SINV- lin@to.co lin@to.co 2022-07-11T11:06:18.788Z 2022-07-18T17:05:42.922Z 1 0 CGST 1.5 9.9
9 1014 2022-07-11 Lordham Debtors INR 1 660 679.8 679.8 679.8 0 0 0 Party SINV- lin@to.co lin@to.co 2022-07-11T11:06:18.788Z 2022-07-18T17:05:42.922Z 1 0 SGST 1.5 9.9
10 1014 2022-07-11 Lordham Debtors INR 1 660 679.8 679.8 679.8 0 0 0 Party SINV- lin@to.co lin@to.co 2022-07-11T11:06:18.788Z 2022-07-18T17:05:42.922Z 1 0 Holy Icon The holiest of icons. 2 330 Sales GST-3 660 0 0 0
11 1011 2022-02-22 Lyn Debtors INR 1 1410 1471.2 1471.2 100 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.656Z 2022-02-28T05:18:32.731Z 1 0 SGST 1.5 30.6
12 1011 2022-02-22 Lyn Debtors INR 1 1410 1471.2 1471.2 100 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.656Z 2022-02-28T05:18:32.731Z 1 0 CGST 1.5 30.6
13 1011 2022-02-22 Lyn Debtors INR 1 1410 1471.2 1471.2 100 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.656Z 2022-02-28T05:18:32.731Z 1 0 Flower Pot Just a flower pot. 1 210 Sales GST-12 210 0 0
14 1011 2022-02-22 Lyn Debtors INR 1 1410 1471.2 1471.2 100 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.656Z 2022-02-28T05:18:32.731Z 1 0 Holy Icon The holiest of icons. 3 400 Sales GST-3 1200 0 0 0
15 1012 2022-02-20 Lordham Debtors INR 1 2230 2353.6 2353.6 0 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.685Z 2022-02-28T05:18:11.657Z 1 0 SGST 1.5 61.8
16 1012 2022-02-20 Lordham Debtors INR 1 2230 2353.6 2353.6 0 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.685Z 2022-02-28T05:18:11.657Z 1 0 CGST 1.5 61.8
17 1012 2022-02-20 Lordham Debtors INR 1 2230 2353.6 2353.6 0 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.685Z 2022-02-28T05:18:11.657Z 1 0 Flower Pot Just a flower pot. 3 210 Sales GST-12 630 0 0
18 1012 2022-02-20 Lordham Debtors INR 1 2230 2353.6 2353.6 0 0 0 0 Party SINV- Administrator Administrator 2022-02-24T05:07:23.685Z 2022-02-28T05:18:11.657Z 1 0 Holy Icon The holiest of icons. 4 400 Sales GST-3 1600 0 0 0
19 1008 2022-02-11 Lordham Debtors INR 1 600 672 672 172 0 0 0 Party SINV- Administrator Administrator 2022-02-11T08:40:28.193Z 2022-02-11T09:48:18.274Z 1 0 SGST 6 36
20 1008 2022-02-11 Lordham Debtors INR 1 600 672 672 172 0 0 0 Party SINV- Administrator Administrator 2022-02-11T08:40:28.193Z 2022-02-11T09:48:18.274Z 1 0 CGST 6 36
21 1008 2022-02-11 Lordham Debtors INR 1 600 672 672 172 0 0 0 Party SINV- Administrator Administrator 2022-02-11T08:40:28.193Z 2022-02-11T09:48:18.274Z 1 0 Flower Pot Just a flower pot. 3 200 Sales GST-12 600 0 0
22 1007 2022-02-04 Lyn Debtors INR 1 200 224 224 0 0 0 0 Party SINV- Administrator Administrator 2022-02-04T06:21:24.058Z 2022-02-04T06:21:46.308Z 1 0 SGST 6 12
23 1007 2022-02-04 Lyn Debtors INR 1 200 224 224 0 0 0 0 Party SINV- Administrator Administrator 2022-02-04T06:21:24.058Z 2022-02-04T06:21:46.308Z 1 0 CGST 6 12
24 1007 2022-02-04 Lyn Debtors INR 1 200 224 224 0 0 0 0 Party SINV- Administrator Administrator 2022-02-04T06:21:24.058Z 2022-02-04T06:21:46.308Z 1 0 Flower Pot Just a flower pot. 1 200 Sales GST-12 200 0 0
25 1004 2022-01-12 Bølèn Debtors INR 1 1800 2016 2016 0 0 0 0 Party SINV- Administrator Administrator 2022-01-12T08:45:19.774Z 2022-01-12T08:45:26.702Z 1 0 SGST 6 108
26 1004 2022-01-12 Bølèn Debtors INR 1 1800 2016 2016 0 0 0 0 Party SINV- Administrator Administrator 2022-01-12T08:45:19.774Z 2022-01-12T08:45:26.702Z 1 0 CGST 6 108
27 1004 2022-01-12 Bølèn Debtors INR 1 1800 2016 2016 0 0 0 0 Party SINV- Administrator Administrator 2022-01-12T08:45:19.774Z 2022-01-12T08:45:26.702Z 1 0 Flower Pot Just a flower pot. 9 200 Sales GST-12 1800 0 0
28 1001 2021-12-16 Debtors INR 1 100 112 112 46 0 0 0 Party SINV- Administrator Administrator 2021-12-16T11:34:06.174Z 2021-12-16T12:00:28.526Z 1 0 SGST 6 6
29 1001 2021-12-16 Debtors INR 1 100 112 112 46 0 0 0 Party SINV- Administrator Administrator 2021-12-16T11:34:06.174Z 2021-12-16T12:00:28.526Z 1 0 CGST 6 6
30 1001 2021-12-16 Debtors INR 1 100 112 112 46 0 0 0 Party SINV- Administrator Administrator 2021-12-16T11:34:06.174Z 2021-12-16T12:00:28.526Z 1 0 Flow Used to test the flow of operations. 1 100 Sales GST-12 100 0 0

View File

@ -1,4 +1,7 @@
import { assertDoesNotThrow } from 'backend/database/tests/helpers';
import { readFileSync } from 'fs';
import { ModelNameEnum } from 'models/types'; import { ModelNameEnum } from 'models/types';
import { join } from 'path';
import { Importer } from 'src/importer'; import { Importer } from 'src/importer';
import test from 'tape'; import test from 'tape';
import { closeTestFyo, getTestFyo, setupTestFyo } from './helpers'; import { closeTestFyo, getTestFyo, setupTestFyo } from './helpers';
@ -6,9 +9,59 @@ import { closeTestFyo, getTestFyo, setupTestFyo } from './helpers';
const fyo = getTestFyo(); const fyo = getTestFyo();
setupTestFyo(fyo, __filename); setupTestFyo(fyo, __filename);
test('importer', async (t) => { test('importer init', (t) => {
const importer = new Importer(ModelNameEnum.SalesInvoice, fyo); const importer = new Importer(ModelNameEnum.SalesInvoice, fyo);
t.ok(importer.getCSVTemplate()); t.equal(
typeof importer.getCSVTemplate(),
'string',
'csv template is a string'
);
t.end();
});
test('import Items', async (t) => {
const importer = new Importer(ModelNameEnum.Item, fyo);
const csvPath = join(__dirname, 'items.csv');
const data = readFileSync(csvPath, { encoding: 'utf-8' });
t.equal(importer.selectFile(data), true, 'file selection');
t.equal((await importer.checkLinks()).length, 0, 'all links exist');
t.doesNotThrow(() => importer.populateDocs(), 'populating docs');
for (const doc of importer.docs) {
await assertDoesNotThrow(async () => await doc.sync());
}
});
test('import Party', async (t) => {
const importer = new Importer(ModelNameEnum.Party, fyo);
const csvPath = join(__dirname, 'parties.csv');
const data = readFileSync(csvPath, { encoding: 'utf-8' });
t.equal(importer.selectFile(data), true, 'file selection');
t.equal((await importer.checkLinks()).length, 0, 'all links exist');
t.doesNotThrow(() => importer.populateDocs(), 'populating docs');
for (const doc of importer.docs) {
await assertDoesNotThrow(async () => await doc.sync());
}
});
test('import SalesInvoices', async (t) => {
const importer = new Importer(ModelNameEnum.SalesInvoice, fyo);
const csvPath = join(__dirname, 'sales_invoices.csv');
const data = readFileSync(csvPath, { encoding: 'utf-8' });
t.equal(importer.selectFile(data), true, 'file selection');
t.equal((await importer.checkLinks()).length, 0, 'all links exist');
t.doesNotThrow(() => importer.populateDocs(), 'populating docs');
const names = [];
for (const doc of importer.docs.slice(0, 2)) {
await assertDoesNotThrow(async () => await doc.sync());
names.push(doc.name);
}
t.ok(
names.every((n) => n?.startsWith('SINV-')),
'numberSeries assigned'
);
}); });
closeTestFyo(fyo, __filename); closeTestFyo(fyo, __filename);