UNPKG

calculate-items

Version:

Items calculation template

372 lines (363 loc) 8.41 kB
import {Item, Summary} from '../../types/types'; const testCases: TestCaseObj[] = [ { input: '4*5000[1,2] + (2+5)*2000[2,3] + 12000 + 4000 + 12%', summary: { members: [ { index: 1, totalExpression: '10000(4*5000/2) + 4000(12000/3) + 1333.33(4000/3) + 1840(15333.33*0.12)', total: 17173.33, productNames: ["Item 1", "Item 3", "Item 4", "Item 5"] }, { index: 2, totalExpression: '10000(4*5000/2) + 4000(2*2000) + 4000(12000/3) + 1333.33(4000/3) + 2320(19333.33*0.12)', total: 21653.33, productNames: ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"] }, { index: 3, totalExpression: '10000(5*2000) + 4000(12000/3) + 1333.33(4000/3) + 1840(15333.33*0.12)', total: 17173.33, productNames: ["Item 2", "Item 3", "Item 4", "Item 5"] }, ], membersCount: 3, total: 55999.99, }, output: [ { name: 'Item 1', value: 20000, originValue: '4*5000', valueType: 'currency', quantity: 4, unitValue: 5000, members: [1, 2], order: 1, values: {}, }, { name: 'Item 2', value: 14000, originValue: '(2+5)*2000', valueType: 'currency', quantity: 7, unitValue: 2000, members: [2, 3], order: 2, values: { 2: { origin: '2*2000', total: 4000, }, 3: { origin: '5*2000', total: 10000, }, }, }, { name: 'Item 3', value: 12000, originValue: '12000', valueType: 'currency', quantity: 1, unitValue: 12000, members: [], order: 3, values: {}, }, { name: 'Item 4', value: 4000, originValue: '4000', valueType: 'currency', quantity: 1, unitValue: 4000, members: [], order: 4, values: {}, }, { name: 'Item 5', value: 12, originValue: '12%', valueType: 'percentage', quantity: 1, unitValue: 12, members: [], order: 5, values: {}, }, ], fails: false }, // { // input: "uq-23\nnsdfsd-34n", // summary: { members: [], membersCount: 0, total: 0 }, // output: [] // }, { input: '-', summary: {members: [], membersCount: 0, total: 0}, output: [], notValid: true }, { input: 'non 3000', summary: {members: [], membersCount: 0, total: 0}, output: [], notValid: true }, // { // input: `un-3000 // olma[1]-23 // qolganlari-400000 // shu[3,4,5]-232 // ana-mana[8] -34`, // summary: { // total: 0, // members: [], // membersCount: 8, // }, // output: [], // }, { input: `koza[1] - 32000 Frekodel[2] - 20000 Non - 8000 Limon-choy - 5000 -2000 Xizmat - 15%`, summary: {members: [ { index: 1, totalExpression: "32000(32000/1) + 4000(8000/2) + 1500(3000/2) + 5625(37500*0.15)", total: 43125, productNames: ["koza", "Non", "Limon-choy", "Xizmat"] }, { index: 2, totalExpression: "20000(20000/1) + 4000(8000/2) + 1500(3000/2) + 3825(25500*0.15)", total: 29325, productNames: ["Frekodel", "Non","Limon-choy", "Xizmat"] }, ], total: 72450, inputText: '', membersCount: 2}, output: [ { name: 'koza', value: 32000, originValue: "32000", valueType: 'currency', quantity: 1, unitValue: 32000, members: [1], order: 1, values: {} }, { name: "Frekodel", value: 20000, originValue: "20000", valueType: 'currency', quantity: 1, unitValue: 20000, members: [2], order: 2, values: {} }, { name: 'Non', value: 8000, originValue: "8000", valueType: 'currency', quantity: 1, unitValue: 8000, members: [], order: 3, values: {}, }, { name: 'Limon-choy', value: 3000, originValue: "5000 -2000", valueType: 'currency', quantity: 1, unitValue: 3000, members: [], order: 4, values: {} }, { name: 'Xizmat', value: 15, originValue: '15%', valueType: 'percentage', quantity: 1, unitValue: 15, members: [], order: 5, values: {} }, ] as Item[], }, { input: `Osh [1, 2] - 43 000 so'm Sho'rva[4] - 23 400 so'm Choy - 3500 so'm Non - 4000 so'm Xizmat - 12% [@user1, tyun, koang\'ip, hwoa sdfa] `, summary: { membersCount: 4, total: 82768, members: [ { index: 1, username: '@user1', totalExpression: '21500(43 000 so\'m/2) + 875(3500/4) + 1000(4000/4) + 2805(23375*0.12)', total: 26180, productNames: ["Osh", "Choy", "Non", "Xizmat"] }, { index: 2, username: 'tyun', totalExpression: '21500(43 000 so\'m/2) + 875(3500/4) + 1000(4000/4) + 2805(23375*0.12)', total: 26180, productNames: ["Osh", "Choy", "Non", "Xizmat"] }, { index: 3, username: 'koang\'ip', totalExpression: '875(3500/4) + 1000(4000/4) + 225(1875*0.12)', total: 2100, productNames: ["Choy", "Non", "Xizmat"] }, { index: 4, username: 'hwoa sdfa', totalExpression: '23400(23 400 so\'m/1) + 875(3500/4) + 1000(4000/4) + 3033(25275*0.12)', total: 28308, productNames: ["Sho'rva", "Choy", "Non", "Xizmat"] }, ], }, output: [ { name: 'Osh', value: 43000, originValue: "43 000 so'm", valueType: 'currency', quantity: 1, unitValue: 43000, members: [1, 2], order: 1, values: {} }, { name: "Sho'rva", value: 23400, originValue: "23 400 so'm", valueType: 'currency', quantity: 1, unitValue: 23400, members: [4], order: 2, values: {} }, { name: 'Choy', value: 3500, originValue: "3500 so'm", valueType: 'currency', quantity: 1, unitValue: 3500, members: [], order: 3, values: {}, }, { name: 'Non', value: 4000, originValue: "4000 so'm", valueType: 'currency', quantity: 1, unitValue: 4000, members: [], order: 4, values: {} }, { name: 'Xizmat', value: 12, originValue: '12%', valueType: 'percentage', quantity: 1, unitValue: 12, members: [], order: 5, values: {} }, ] as Item[], }, { input: 'Salfetka 4 - 13500 + 445\n sut 1l - 23 000, \nmuzqaymoq 1l - 4 000', output: [ { name: 'Salfetka 4', value: 13945, originValue: '13500 + 445', valueType: 'currency', quantity: 1, unitValue: 13945, members: [], order: 1, values: {} }, { name: 'sut 1l', value: 23000, originValue: '23 000,', valueType: 'currency', quantity: 1, unitValue: 23000, members: [], order: 2, values: {} }, { name: 'muzqaymoq 1l', value: 4000, originValue: '4 000', valueType: 'currency', quantity: 1, unitValue: 4000, members: [], order: 3, values: {} }, ], summary: { members: [ { index: 1, totalExpression: '13945(13945/1) + 23000(23000/1) + 4000(4000/1)', total: 40945, productNames: ["Salfetka 4", "sut 1l", "muzqaymoq 1l"] }, ], membersCount: 1, total: 40945, }, }, ]; export default testCases; type TestCaseObj = { input: string; summary: Summary; output: Item[]; fails?: boolean notValid?: boolean }