import { DBProvider } from 'ionic-np-dbprovider/src'; import { OrderHeaderEntity } from 'ionic-np-core-entitycomponent/src'; import { OrderProductEntity } from 'ionic-np-core-entitycomponent/src'; import { ProductEntity } from 'ionic-np-core-entitycomponent/src'; import { ServiceProvider } from 'ionic-np-serviceprovider/src'; import { Injectable } from '@angular/core'; @Injectable() export class OrderBC { constructor(private serviceprovider: ServiceProvider) { } public Read(): Promise { return new Promise(function (resolve, reject) { let dbProvider: DBProvider; let orderListEntity: OrderHeaderEntity[]; dbProvider = new DBProvider(); let retValue: Array; dbProvider.Read(OrderHeaderEntity.TABLE_NAME). then((resultSet) => { if (resultSet.rows.length > 0) { orderListEntity = new Array(resultSet.rows.length); for (let i = 0; i < resultSet.rows.length; i++) { orderListEntity[i] = new OrderHeaderEntity(); orderListEntity[i].TXN_NO = resultSet.rows.item(i).TXN_NO; orderListEntity[i].TXN_DT = resultSet.rows.item(i).TXN_DT; orderListEntity[i].TTL_GROSS_AMT = resultSet.rows.item(i).TTL_GROSS_AMT; orderListEntity[i].TTL_DISC_AMT = resultSet.rows.item(i).TTL_DISC_AMT; orderListEntity[i].TTL_TAX_AMT = resultSet.rows.item(i).TTL_TAX_AMT; orderListEntity[i].TTL_NET_AMT = resultSet.rows.item(i).TTL_NET_AMT; } } resolve(orderListEntity); }); }); } public ReadOrderProduct(orderheader: Array): Promise { return new Promise(function (resolve, reject) { let dbProvider: DBProvider; let count: number; count = 0; dbProvider = new DBProvider(); for (let i = 0; i < orderheader.length; i++) { dbProvider.Read(OrderProductEntity.TABLE_NAME, "where TXN_NO='" + orderheader[i].TXN_NO + "'") .then((result) => { orderheader[i].X_ORDPRD = new Array(result.rows.length); for (let j = 0; j < result.rows.length; j++) { orderheader[i].X_ORDPRD[j] = new OrderProductEntity(); orderheader[i].X_ORDPRD[j].TXN_NO = result.rows.item(j).TXN_NO; orderheader[i].X_ORDPRD[j].PRD_CD = result.rows.item(j).PRD_CD; orderheader[i].X_ORDPRD[j].PRD_QTY = result.rows.item(j).PRD_QTY; orderheader[i].X_ORDPRD[j].TAX_RATE = result.rows.item(j).TAX_RATE; orderheader[i].X_ORDPRD[j].TAX_AMT = result.rows.item(j).TAX_AMT; orderheader[i].X_ORDPRD[j].DISC_RATE = result.rows.item(j).DISC_RATE; orderheader[i].X_ORDPRD[j].DISC_AMT = result.rows.item(j).DISC_AMT; orderheader[i].X_ORDPRD[j].LIST_PRC = result.rows.item(j).LIST_PRC; orderheader[i].X_ORDPRD[j].NET_AMT = result.rows.item(j).NET_AMT; orderheader[i].X_ORDPRD[j].GROSS_AMT = result.rows.item(j).GROSS_AMT; } count = count + 1; if (count == orderheader.length) { resolve(orderheader); } });//OrderProductEntity } }); } public Create(orderHeaderEntity: Array): Promise { return new Promise(function (resolve, reject) { let dbProvider: DBProvider; dbProvider = new DBProvider(); let strSqls: Array; strSqls = new Array(); let maxnumber: any; dbProvider.ReadQuery("select MAX(TXN_NO) as maxno from " + OrderHeaderEntity.TABLE_NAME).then((resultSet) => { if (resultSet.rows.length > 0 && resultSet.rows.item(0).maxno != null) { maxnumber = (resultSet.rows.item(0).maxno as string).substring(3); } else maxnumber = 0; for (let i = 0; i < orderHeaderEntity.length; i++) { maxnumber++; orderHeaderEntity[i].TXN_NO = "TXN0" + maxnumber; strSqls.push("insert into " + OrderHeaderEntity.TABLE_NAME + " (TXN_NO,TXN_DT,TTL_GROSS_AMT,TTL_DISC_AMT,TTL_TAX_AMT,TTL_NET_AMT) VALUES ('" + orderHeaderEntity[i].TXN_NO + "'," + "date('now')" + ",'" + orderHeaderEntity[i].TTL_GROSS_AMT + "','" + orderHeaderEntity[i].TTL_DISC_AMT + "','" + orderHeaderEntity[i].TTL_TAX_AMT + "','" + orderHeaderEntity[i].TTL_NET_AMT + "')" ); for (let j = 0; j < orderHeaderEntity[i].X_ORDPRD.length; j++) { strSqls.push("insert into " + OrderProductEntity.TABLE_NAME + " (TXN_NO,PRD_CD,LIST_PRC,PRD_QTY,GROSS_AMT,DISC_RATE,DISC_AMT,TAX_RATE,TAX_AMT,NET_AMT) VALUES ('" + orderHeaderEntity[i].TXN_NO + "','" + orderHeaderEntity[i].X_ORDPRD[j].PRD_CD + "','" + orderHeaderEntity[i].X_ORDPRD[j].LIST_PRC + "','" + orderHeaderEntity[i].X_ORDPRD[j].PRD_QTY + "','" + orderHeaderEntity[i].X_ORDPRD[j].GROSS_AMT + "','" + orderHeaderEntity[i].X_ORDPRD[j].DISC_RATE + "','" + orderHeaderEntity[i].X_ORDPRD[j].DISC_AMT + "','" + orderHeaderEntity[i].X_ORDPRD[j].TAX_RATE + "','" + orderHeaderEntity[i].X_ORDPRD[j].TAX_AMT + "','" + orderHeaderEntity[i].X_ORDPRD[j].NET_AMT + "')" ); } } dbProvider.ExecuteSql(strSqls) .then((result) => { resolve(result); }) .catch((reason) => { reject(reason); }); }); });//for max no .then } /* Calculate Gross Amt = Price * Quantity Calculate Disc = m_prddisc.disc_rate * Gross Amt Calculate Tax = m_prdtax.tax_rate * (Gross Amt - Disc) Calculate Amt = Gross Amt - Disc + Tax */ public PopulateCart(productentity:Array): OrderHeaderEntity { let orderheader: OrderHeaderEntity; orderheader = new OrderHeaderEntity(); orderheader.X_ORDPRD = new Array(); for (let i = 0; i < productentity.length; i++) { if (productentity[i].CUSTOM[0] > 0) { let orderproduct: OrderProductEntity; orderproduct = new OrderProductEntity(); orderproduct.PRD_CD = productentity[i].PRD_CD; orderproduct.CUSTOM.push(productentity[i].PRD_DESC); orderproduct.LIST_PRC = productentity[i].M_PRDPRC[0].LIST_PRC; orderproduct.PRD_QTY = productentity[i].CUSTOM[0]; orderproduct.GROSS_AMT = (orderproduct.LIST_PRC * orderproduct.PRD_QTY); orderproduct.DISC_RATE = productentity[i].M_PRDDISC[0].DISC_RATE; orderproduct.DISC_AMT = (orderproduct.GROSS_AMT * orderproduct.DISC_RATE) / 100; orderproduct.DISC_AMT = Math.round(orderproduct.DISC_AMT * 100) / 100; orderproduct.TAX_RATE = productentity[i].M_PRDTAX[0].TAX_RATE; orderproduct.TAX_AMT = (orderproduct.TAX_RATE * (orderproduct.GROSS_AMT - orderproduct.DISC_AMT)) / 100; orderproduct.TAX_AMT = Math.round(orderproduct.TAX_AMT * 100) / 100; orderproduct.NET_AMT = (orderproduct.GROSS_AMT - orderproduct.DISC_AMT) + orderproduct.TAX_AMT; orderproduct.NET_AMT = Math.round(orderproduct.NET_AMT * 100) / 100; orderheader.TTL_GROSS_AMT = (isNaN(orderheader.TTL_GROSS_AMT) ? 0 : orderheader.TTL_GROSS_AMT) + orderproduct.GROSS_AMT; orderheader.TTL_GROSS_AMT = Math.round(orderheader.TTL_GROSS_AMT * 100) / 100; orderheader.TTL_DISC_AMT = (isNaN(orderheader.TTL_DISC_AMT) ? 0 : orderheader.TTL_DISC_AMT) + orderproduct.DISC_AMT; orderheader.TTL_DISC_AMT = Math.round(orderheader.TTL_DISC_AMT * 100) / 100; orderheader.TTL_TAX_AMT = (isNaN(orderheader.TTL_TAX_AMT) ? 0 : orderheader.TTL_TAX_AMT) + orderproduct.TAX_AMT; orderheader.TTL_TAX_AMT = Math.round(orderheader.TTL_TAX_AMT * 100) / 100; orderheader.TTL_NET_AMT = (isNaN(orderheader.TTL_NET_AMT) ? 0 : orderheader.TTL_NET_AMT) + orderproduct.NET_AMT; orderheader.TTL_NET_AMT = Math.round(orderheader.TTL_NET_AMT * 100)/100; orderheader.X_ORDPRD.push(orderproduct); } } return orderheader; } public Post(httpUrl: string, orderheaderentity: Array) { let jsonData: string; let jsonDataChild: string; /* for (let i = 0; i < orderheaderentity.length; i++) { jsonData = ""; jsonDataChild = ""; for (let j = 0; j < orderheaderentity[i].X_ORDPRD.length; j++) { jsonDataChild = JSON.stringify({ PRD_CD: orderheaderentity[i].X_ORDPRD[j].PRD_CD, PRD_QTY: orderheaderentity[i].X_ORDPRD[j].PRD_QTY, TXN_NO: orderheaderentity[i].X_ORDPRD[j].TXN_NO, TAX_RATE: orderheaderentity[i].X_ORDPRD[j].TAX_RATE, TAX_AMT: orderheaderentity[i].X_ORDPRD[j].TAX_AMT, DISC_RATE: orderheaderentity[i].X_ORDPRD[j].DISC_RATE, DISC_AMT: orderheaderentity[i].X_ORDPRD[j].DISC_AMT, LIST_PRC: orderheaderentity[i].X_ORDPRD[j].LIST_PRC, NET_AMT: orderheaderentity[i].X_ORDPRD[j].NET_AMT, GROSS_AMT: orderheaderentity[i].X_ORDPRD[j].GROSS_AMT }); } jsonData = JSON.stringify({ TXN_NO: orderheaderentity[i].TXN_NO, TXN_DT: orderheaderentity[i].TXN_DT, TTL_TAX_AMT: orderheaderentity[i].TTL_TAX_AMT, TTL_DISC_AMT: orderheaderentity[i].TTL_DISC_AMT, TTL_GROSS_AMT: orderheaderentity[i].TTL_GROSS_AMT, TTL_NET_AMT: orderheaderentity[i].TTL_NET_AMT, X_ORDPRD: [jsonDataChild] }); } */ this.serviceprovider.Post(httpUrl, JSON.stringify(orderheaderentity)); } }