public void LoadRefillHeaderAndInventoryData(List<RefillHeaderDataEntity> m_headers, 
		                                      RefillCustInventoryHeaderDataEntity custInv)
        {
            this.txtamttender.Enabled = true;
            txtBottlesOnHand.Text = (custInv != null) ? custInv.BottlesOnHand.ToString() : "0";
            txtCapsOnHand.Text = (custInv != null) ? custInv.CapsOnHand.ToString() : "0";

            bottlesOnHand = Int32.Parse(txtBottlesOnHand.Text);
            capsOnHand = Int32.Parse(txtCapsOnHand.Text);

            txtReturnedBottles.Enabled = (txtBottlesOnHand.Text != "0") ? true : false;
            txtReturnedCaps.Enabled = (txtCapsOnHand.Text != "0") ? true : false;

            this.refillHeaders = m_headers;
            totalAmountDue = 0.00M;
            foreach(RefillHeaderDataEntity header in this.refillHeaders)
            {
                dgvOutBalance.Rows.Add(header.Date.ToShortDateString(), header.RefillHeaderID, header.TotalQty,
                                       header.AmountDue.ToString("N2"), header.AmountTender.ToString("N2"),
                                       (header.AmountDue - header.AmountTender).ToString("N2"));
                totalAmountDue += (header.AmountDue - header.AmountTender);
            }
            txtTotalAmtDue.Text = totalAmountDue.ToString("N2");
            txtbalance.Text = totalAmountDue.ToString("N2");
        }
 public RefillCustInventoryDetailDataEntity GetDetailByDay(RefillCustInventoryHeaderDataEntity header, DateTime daystamp)
 {
     using(var session = NHibernateHelper.OpenSession())
     {
         var query = session.QueryOver<RefillCustInventoryDetailDataEntity>()
             .Where(x => x.Header == header)
             .And(x => x.Date == daystamp)
             .SingleOrDefault();
         return query;
     }
 }
 public RefillingReturnPaymentPresenter(IRefillReturnPaymentView m_view)
 {
     this.m_view = m_view;
     m_customerDao = new CustomerDao();
     m_refillDao = new RefillDao();
     m_refillReportDao = new RefillReportDao();
     m_custInvDao = new RefillCustomerInventoryDao();
     m_daysummaryDao = new RefillDaySummaryDao();
     m_invDao = new RefillInventoryDao();
     customer = new CustomerDataEntity();
     custInv = new RefillCustInventoryHeaderDataEntity();
 }
 public void Delete(RefillCustInventoryHeaderDataEntity p_custinv)
 {
     using(var session = NHibernateHelper.OpenSession())
     {
         using(var transaction = session.BeginTransaction())
         {
             try
             {
                 session.Delete(p_custinv);
                 transaction.Commit();
             }
             catch(Exception ex)
             {
                 transaction.Rollback();
                 throw ex;
             }
         }
     }
 }
 public void GetRefillJOsByCustomer(string customerName)
 {
     try
     {
         customer = m_customerDao.GetByName(customerName) as CustomerDataEntity;
         List<RefillHeaderDataEntity> refillHeaders = m_refillReportDao.GetUnpaidTransactionsReport(customer) as List<RefillHeaderDataEntity>;
         custInv = m_custInvDao.GetByCustomer(customer) as RefillCustInventoryHeaderDataEntity;
         if((custInv == null || (custInv.BottlesOnHand == 0 && custInv.CapsOnHand == 0))
            && refillHeaders.Count == 0)
         {
             MessageService.ShowInfo("No records found for customer: " + customerName);
             return;
         }
         m_view.LoadRefillHeaderAndInventoryData(refillHeaders, custInv);
     }
     catch(Exception ex)
     {
         MessageService.ShowError("Unable to display data; an unexpected error occurred.\n" +
                                 "Please check error log for details.\n", ex);
     }
 }
        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 RefillCustInventoryDetailDataEntity CreateNewCustInventoryDetail(RefillCustInventoryHeaderDataEntity header,
		                                                                    int returnedBottles, int returnedCaps, DateTime returnDate)
        {
            RefillCustInventoryDetailDataEntity detail = new RefillCustInventoryDetailDataEntity();
            detail.Header = header;
            detail.BottlesReturned = returnedBottles;
            detail.CapsReturned = returnedCaps;
            detail.Date = returnDate;
            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);
     }
 }