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 { Injectable } from '@angular/core'; import {OrderBC} from 'ionic-np-core-businesscomponent/src' import { ServiceProvider } from 'ionic-np-core-servicecomponent/src' @Injectable() export class CustomOrderBC extends OrderBC { //constructor(private serviceprovider: ServiceProvider) { super(serviceprovider); } /* Calculate Gross Amt = Price * Quantity Calculate Disc = m_prddisc.disc_rate * Gross Amt Calculate Tax = m_prdtax.tax_rate * (Gross Amt) 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)) / 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; } }