public void Delete(RefillInventoryHeaderDataEntity p_inventory)
        {
            using(var session = NHibernateHelper.OpenSession())
            {
                using(var transaction = session.BeginTransaction())
                {
                    try
                    {
                        session.Delete(p_inventory);
                        transaction.Commit();
                    }
                    catch(Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }

                }
            }
        }
        public RefillInventoryDetailDataEntity GetDetailDay(RefillInventoryHeaderDataEntity p_header, DateTime p_dayStamp)
        {
            using(var session = NHibernateHelper.OpenSession())
            {
                var query = session.QueryOver<RefillInventoryDetailDataEntity>()
                    .Where(x => x.Header == p_header)
                    .And(x => x.Date == p_dayStamp)
                    .SingleOrDefault();

                return query;
            }
        }
 public void DeleteRefillInventory(RefillInventoryHeaderDataEntity refillInv)
 {
     m_refillInvDao.Delete(refillInv);
 }
예제 #4
0
        public void saveNewHeaderAndNewDaySummary()
        {
            // test for new header and new day
            // should create new record for daysummary
            RefillHeaderDataEntity header = new RefillHeaderDataEntity();
            RefillDetailDataEntity detail = new RefillDetailDataEntity();

            RefillTransactionTypeDataEntity transactionType = new RefillTransactionTypeDao().GetByName("Delivery");
            RefillProductTypeDataEntity productType = new RefillProductTypeDao().GetByName("5 Gal at 25");

            CustomerDao custdao = new CustomerDao();
            CustomerDataEntity customer = custdao.GetByName("Vanessa Dee");
            if(customer == null)
            {
                customer = new CustomerDataEntity();
                customer.Name = "Vanessa Dee";
                customer.Address = "Cebu";
                customer.ContactNumber = "111-1111";
            }

            header.Date = DateTime.Now;
            header.TransactionType = transactionType;

            detail.Header = header; // set header entity in detail for nhibernate to pickup and map
            detail.ProductType = productType;
            detail.Qty = 10;
            detail.Amount = productType.Price * Convert.ToDecimal(detail.Qty);
            detail.StoreBottleQty = 10;
            detail.StoreCapQty = 10;

            // update main inventory
            // TODO: fix proper handling of inventory per type of bottle???
            RefillInventoryDao refillInvDao = new RefillInventoryDao();
            RefillInventoryHeaderDataEntity inv = new RefillInventoryHeaderDataEntity();
            //inv = refillInvDao.GetByName("Cap");
            //inv.TotalQty = 500;
            //inv.QtyOnHand -= detail.StoreCapQty;
            //inv.QtyReleased += detail.StoreCapQty;
            //refillInvDao.Update(inv);
            inv = refillInvDao.GetByName("5 Gal Bottle");
            inv.QtyOnHand -= detail.StoreBottleQty;
            inv.QtyReleased += detail.StoreBottleQty;
            refillInvDao.Update(inv);

            // update cust inventory
            RefillCustomerInventoryDao custInvDao = new RefillCustomerInventoryDao();
            RefillCustInventoryHeaderDataEntity custInv= new RefillCustInventoryHeaderDataEntity();
            custInv.Customer = customer;
            custInv.CapsOnHand += detail.StoreCapQty;
            custInv.BottlesOnHand += detail.StoreBottleQty;

            header.Customer = customer;

            header.DetailEntities.Add(detail); // add detail to header details list
            header.AmountDue = detail.Amount;
            header.TotalQty = detail.Qty;
            header.AmountTender = header.AmountDue;

            if(header.AmountTender == header.AmountTender){
                header.PaidFlag = true;
            }
            else{
                header.PaidFlag = false;
            }

            // set paymentdetail
            RefillPaymentDetailDataEntity paymentdetail = new RefillPaymentDetailDataEntity();
            paymentdetail.Amount = header.AmountTender;
            paymentdetail.PaymentDate = Convert.ToDateTime(DateTime.Now.ToShortDateString());
            paymentdetail.Header = header;
            header.PaymentDetailEntities.Add(paymentdetail);

            // set daysummary
            RefillDaySummaryDataEntity daysummary = new RefillDaySummaryDataEntity();
            daysummary.DayStamp = Convert.ToDateTime(DateTime.Now.ToShortDateString());
            daysummary.TotalSales += header.AmountTender;
            daysummary.TransCount += 1;
            daysummary.HeaderEntities.Add(header); // set header entity in daysummary for nhibernate to pickup and map
            header.DaySummary = daysummary; // set daysummary entity in header for nhibernate to pickup and map

            custdao.SaveOrUpdate(customer); // save or update customer
            custInvDao.SaveOrUpdate(custInv);
            // save daysummary record; no need to explicitly save header,detail,jobcharges,paymentdetail, etc for new daysummary record
            // this will handle the saving for the linked tables
            RefillDao ldao = new RefillDao();
            ldao.SaveOrUpdate(header);
        }
        private List<RefillInventoryHeaderDataEntity> GetRefillInvDataValueChange(List<int> rowIndexChange, out string errorMessage)
        {
            List<RefillInventoryHeaderDataEntity> refillInvs = new List<RefillInventoryHeaderDataEntity>();
            RefillInventoryHeaderDataEntity refillInv = new RefillInventoryHeaderDataEntity();
            List<string> updatedRefillInv = new List<string>();
            string errorMsg = string.Empty;
            int addStocks = 0;
            int removeStocks = 0;
            string name = string.Empty;

            foreach(int rowIndex in rowIndexChange)
            {
                if(!this.dgvRefillInventory.Rows[rowIndex].Cells["AddStocks"].Value.ToString().Trim().Equals(string.Empty))
                    addStocks = (int)this.dgvRefillInventory.Rows[rowIndex].Cells["AddStocks"].Value;
                if(!this.dgvRefillInventory.Rows[rowIndex].Cells["RemoveStocks"].Value.ToString().Trim().Equals(string.Empty))
                    removeStocks = (int)this.dgvRefillInventory.Rows[rowIndex].Cells["RemoveStocks"].Value;

                if(rowIndex <= refillInvMaxRowIndex)
                {
                    int ID = (int)this.dgvRefillInventory.Rows[rowIndex].Cells["InvHeaderID"].Value;
                    refillInv = m_refillInvEntity.Find(m_refillInv => m_refillInv.InvHeaderID == ID);
                    RefillInventoryDetailDataEntity invDetail = new RefillInventoryDetailDataEntity();

                    bool detailFound = false;
                    foreach(RefillInventoryDetailDataEntity detail in refillInv.DetailEntities)
                    {
                        if(detail.Date == DateTime.Now.Date)
                        {
                            detail.QtyAdded += addStocks;
                            detail.QtyRemoved += removeStocks;
                            detail.QtyOnHand += addStocks - removeStocks;
                            detail.TotalQty += addStocks - removeStocks;
                            detailFound = true;
                            break;
                        }
                    }
                    if(!detailFound){
                        invDetail = new RefillInventoryDetailDataEntity();
                        invDetail.Date = DateTime.Now.Date;
                        invDetail.QtyAdded += addStocks;
                        invDetail.QtyRemoved += removeStocks;
                        invDetail.QtyOnHand += addStocks - removeStocks;
                        invDetail.TotalQty += addStocks - removeStocks;
                        invDetail.Header = refillInv;
                        refillInv.DetailEntities.Add(invDetail);
                    }
                    refillInv.QtyOnHand += addStocks - removeStocks;
                    refillInv.TotalAdded += addStocks;
                    refillInv.TotalRemoved += removeStocks;
                    refillInv.TotalQty += addStocks - removeStocks;

                    refillInvs.Add(refillInv);
                    updatedRefillInv.Add(refillInv.Name.ToUpper());
                }
                else
                {
                    RefillInventoryHeaderDataEntity header = new RefillInventoryHeaderDataEntity();
                    RefillInventoryHeaderDataEntity newHeader = new RefillInventoryHeaderDataEntity();
                    RefillInventoryDetailDataEntity detail = new RefillInventoryDetailDataEntity();
                    name = this.dgvRefillInventory.Rows[rowIndex].Cells["Name"].Value.ToString().Trim();

                    newHeader = m_refillInvEntity.Find(m_refillInv => m_refillInv.Name.ToUpper() == name.ToUpper());

                    if((newHeader == null || newHeader.InvHeaderID == 0) && !updatedRefillInv.Contains(name.ToUpper()))
                    {
                        header.Name = name;
                        header.QtyOnHand += addStocks;
                        header.TotalAdded += addStocks;
                        header.TotalQty += addStocks;

                        detail.Header = header;
                        detail.Date = DateTime.Now.Date;
                        detail.QtyAdded += addStocks;
                        detail.QtyOnHand += addStocks;
                        detail.TotalQty += addStocks;

                        header.DetailEntities.Add(detail);
                        refillInvs.Add(header);
                        updatedRefillInv.Add(header.Name.ToUpper());
                    }
                    else
                    {
                        errorMsg += name + " , ";
                    }
                }
            }

            errorMessage = errorMsg;
            return refillInvs;
        }
        void BtnDeleteInvClick(object sender, EventArgs e)
        {
            RefillInventoryHeaderDataEntity refillInv = new RefillInventoryHeaderDataEntity();

            if(this.dgvRefillInventory.SelectedRows.Count > 0)
            {
                if(MessageService.ShowYesNo("Are you sure to delete selected inventory item?", "Delete Inventory Item"))
                {
                    foreach(DataGridViewRow currentRow in this.dgvRefillInventory.SelectedRows)
                    {
                        if(currentRow.Index <= refillInvMaxRowIndex)
                        {
                            int ID = (int)this.dgvRefillInventory.Rows[currentRow.Index].Cells["InvHeaderID"].Value;
                            refillInv = m_refillInvEntity.Find(m_refillInv => m_refillInv.InvHeaderID == ID);
                            m_presenter.DeleteRefillInventory(refillInv);
                        }
                        if(!this.dgvRefillInventory.Rows[currentRow.Index].IsNewRow)
                            dgvRefillInventory.Rows.Remove(this.dgvRefillInventory.Rows[currentRow.Index]);
                    }
                    m_presenter.SetAllRefillInventory();
                    this.dgvRefillInventory.AllowUserToAddRows = false;
                    refillInvMaxRowIndex = this.dgvRefillInventory.RowCount - 1;
                    refillInvIndexChange.Clear();
                }
            }
        }
 public void Update(RefillInventoryHeaderDataEntity p_inventory	)
 {
     using(var session = NHibernateHelper.OpenSession())
     {
         using(var transaction = session.BeginTransaction())
         {
             session.Update(p_inventory);
             transaction.Commit();
         }
     }
 }
 private RefillInventoryDetailDataEntity CreateNewInventoryDetail(RefillInventoryHeaderDataEntity header, int returnedQty, DateTime daystamp)
 {
     RefillInventoryDetailDataEntity detail = new RefillInventoryDetailDataEntity();
     detail.Header = header;
     detail.QtyOnHand += returnedQty;
     detail.QtyReleased -= returnedQty;
     detail.Date = daystamp;
     return detail;
 }
 private bool UpdateRefillCustomerInventory(RefillHeaderDataEntity headerEntity)
 {
     try{
         RefillInventoryHeaderDataEntity inventoryHeader = new RefillInventoryHeaderDataEntity();
         RefillCustInventoryHeaderDataEntity customerInvHeader = m_customerInvDao.GetByCustomer(headerEntity.Customer);
         if(customerInvHeader == null){
             customerInvHeader = new RefillCustInventoryHeaderDataEntity();
             customerInvHeader.Customer = headerEntity.Customer;
         }
         foreach(RefillDetailDataEntity detail in headerEntity.DetailEntities){
             if(detail.ProductType.Name.StartsWith("5 Gal",true,null)){
                 inventoryHeader = m_refillInvDao.GetByName("5 Gal");
                 if(inventoryHeader != null){
                     inventoryHeader.QtyOnHand -= detail.StoreBottleQty;
                     inventoryHeader.QtyReleased += detail.StoreBottleQty;
                     customerInvHeader.CapsOnHand += detail.StoreCapQty;
                     customerInvHeader.BottlesOnHand += detail.StoreBottleQty;
                     m_refillInvDao.Update(inventoryHeader);
                     m_customerInvDao.SaveOrUpdate(customerInvHeader);
                     UpdateCapsQty(detail, customerInvHeader, false);
                     UpdateInventoryDetail(inventoryHeader);
                 }
             }
         }
     }catch(Exception ex){
         MessageService.ShowError("Unexpected exception occured while processing your request.\nPlease see log file for technical details","Error", ex);
         return false;
     }
     return true;
 }
 private void UpdateCapsQty(RefillDetailDataEntity detail, RefillCustInventoryHeaderDataEntity customerInvHeader, bool voided)
 {
     RefillInventoryHeaderDataEntity inventoryHeader = new RefillInventoryHeaderDataEntity();
     inventoryHeader = m_refillInvDao.GetByName("Caps");
     if(inventoryHeader != null){
         if(!voided){
             inventoryHeader.QtyOnHand -= detail.StoreCapQty;
             inventoryHeader.QtyReleased += detail.StoreCapQty;
             customerInvHeader.CapsOnHand += detail.StoreCapQty;
         }else{
             inventoryHeader.QtyOnHand += detail.StoreCapQty;
             inventoryHeader.QtyReleased -= detail.StoreCapQty;
             customerInvHeader.CapsOnHand -= detail.StoreCapQty;
         }
         m_refillInvDao.Update(inventoryHeader);
         UpdateInventoryDetail(inventoryHeader);
     }
 }
        public void VoidTransaction()
        {
            try{
                m_OriginalHeaderEntity.VoidFlag = true;
                m_refillDao.Update(m_OriginalHeaderEntity);
                RefillDaySummaryDataEntity daySummary = m_summaryDao.GetByDayId(m_OriginalHeaderEntity.DaySummary.DayID);
                daySummary.TotalSales -= m_OriginalHeaderEntity.AmountTender;
                daySummary.TransCount -= 1;
                m_summaryDao.Update(daySummary);

                RefillInventoryHeaderDataEntity inventoryHeader = new RefillInventoryHeaderDataEntity();
                RefillCustInventoryHeaderDataEntity customerInvHeader = m_customerInvDao.GetByCustomer(m_OriginalHeaderEntity.Customer);
                foreach(RefillDetailDataEntity detail in m_OriginalHeaderEntity.DetailEntities){
                    if(detail.ProductType.Name.StartsWith("5 Gal",true,null)){
                        inventoryHeader = m_refillInvDao.GetByName("5 Gal");
                        if(inventoryHeader != null){
                            inventoryHeader.QtyOnHand += detail.StoreBottleQty;
                            inventoryHeader.QtyReleased -= detail.StoreBottleQty;
                            customerInvHeader.CapsOnHand -= detail.StoreCapQty;
                            customerInvHeader.BottlesOnHand -= detail.StoreBottleQty;
                            m_refillInvDao.Update(inventoryHeader);
                            m_customerInvDao.SaveOrUpdate(customerInvHeader);
                            UpdateCapsQty(detail, customerInvHeader, true);
                            UpdateInventoryDetail(inventoryHeader);
                        }
                    }
                }
                MessageService.ShowInfo("Successfully voiding transaction with JO number: " + m_OriginalHeaderEntity.RefillHeaderID.ToString().PadLeft(6, '0'));
            }catch(Exception ex){
                MessageService.ShowError("There is a problem while voiding this transaction.\nPlease see the log file for technical details." ,"Error in Voiding Transaction", ex);
            }
        }
 public void UpdateInventoryDetail(RefillInventoryHeaderDataEntity p_inventoryHeader)
 {
     if(p_inventoryHeader != null){
         DateTime today = Convert.ToDateTime(DateTime.Now.ToShortDateString());
         RefillInventoryDetailDataEntity inventoryDetail = m_refillInvDetailDao.GetDetailDay(p_inventoryHeader, today);
         if(inventoryDetail == null){
             inventoryDetail = new RefillInventoryDetailDataEntity();
         }
         inventoryDetail.Header = p_inventoryHeader;
         inventoryDetail.Date = today;
         inventoryDetail.QtyAdded = 0;
         inventoryDetail.QtyOnHand = p_inventoryHeader.QtyOnHand;
         inventoryDetail.QtyReleased = p_inventoryHeader.QtyReleased;
         inventoryDetail.QtyRemoved = 0;
         inventoryDetail.TotalQty = p_inventoryHeader.TotalQty;
         m_refillInvDetailDao.SaveOrUpdate(inventoryDetail);
     }
 }