public void AddUpdatePurchaseInvoiceDetail(PurchaseInvoiceDetail purchaseinvoicedetail)
        {
            PurchaseInvoiceDetailData data = new PurchaseInvoiceDetailData();

            try
            {
                data.AddUpdatePurchaseInvoiceDetail(purchaseinvoicedetail);
                // this.PurchaseOrderStatusChanged += new OrderEventsHandler(PurchaseInvoiceDetail_OrderStatusChanged);

                PurchaseInvoiceHeader           head = new PurchaseInvoiceHeader();
                PurchaseInvoiceHeaderCollection col  = new PurchaseInvoiceHeaderCollection();

                head = head.GetPurchaseInvoiceHeader(purchaseinvoicedetail.InvoiceID);

                /*this.OrderStatusChanged += new OrderEventsHandler(PurchaseInvoiceHeader_OrderStatusChanged);*/
                // if (head.Status == (byte)OrderStatus.Received)
                // {
                //    OnPurchaseOrderStatusChanged(purchaseinvoicedetail.ProductID, purchaseinvoicedetail.Quantity);

                // }
                UpdateInvoiceTotal(purchaseinvoicedetail.InvoiceID);
            }
            catch (Exception ex)
            {
                log.Write(ex.Message, "AddUpdatePurchaseInvoiceDetail");
                throw (ex);
            }
            finally
            {
                data = null;
            }
        }
        private void UpdateInvoiceTotal(int invoiceDetailID, bool flag)
        {
            PurchaseInvoiceHeader           pih     = new PurchaseInvoiceHeader();
            PurchaseInvoiceDetail           pid     = new PurchaseInvoiceDetail();
            PurchaseInvoiceDetailCollection pidColl = new PurchaseInvoiceDetailCollection();

            try
            {
                pid = pid.GetPurchaseInvoiceDetails(invoiceDetailID);
                int invoiceID = pid.InvoiceID;
                string where = "invoiceID = " + invoiceID;
                string orderby = String.Empty;
                pidColl = pid.GetPurchaseInvoiceDetailsCollection(where, orderby);

                decimal total = 0.00m;
                foreach (PurchaseInvoiceDetail p in pidColl)
                {
                    total += (decimal)(p.UnitPrice * p.Quantity);
                }
                pih          = pih.GetPurchaseInvoiceHeader(invoiceID);
                pih.TotalDue = total;
                pih.UpdatePurchaseInvoiceHeader(pih);
            }
            catch (Exception ex)
            {
                log.Write(ex.Message, "UpdateInvoiceTotal");
                throw (ex);
            }
            finally
            {
                pih     = null;
                pid     = null;
                pidColl = null;
            }
        }