public virtual void CustomerManagement(Model.Customer.Customer customer, string requestCode) { if (requestCode == null) { throw new ArgumentException("Request code", "requestCode"); } if (customer == null) { throw new ArgumentNullException("customer", "Customer"); } if (requestCode == Resources.OperationRequestInsert) { InsertCustomer(customer); } else if (requestCode == Resources.OperationRequestDuplicate) { customer.CustomerId = 0; InsertCustomer(customer); } else if (requestCode == Resources.OperationRequestUpdate) { UpdateCustomer(customer); } else { DeleteCustomer(customer); } }
private void UpdateCustomer(Model.Customer.Customer customer) { if (customer == null) { throw new ArgumentNullException("customer", "Customer"); } _customerDataAccess.UpdateCustomer(customer); }
private void InsertCustomer(Model.Customer.Customer customer) { if (customer == null) { throw new ArgumentNullException("customer", "Customer"); } //Insert customer _customerDataAccess.InsertCustomer(customer); //Updating customer code customer.CustomerCode = StringHelper.Right("00" + DateTime.Now.Year, 2) + "-" + StringHelper.Right("00" + DateTime.Now.Month, 2) + "-" + customer.CustomerId; UpdateCustomer(customer); }
private void DeleteCustomer(Model.Customer.Customer customer) { if (customer == null) { throw new ArgumentNullException("customer", "Customer"); } int customerId = customer.CustomerId; _customerDataAccess.DeleteCustomer(customer); IList dCardList = _customerDataAccess.GetDiscountCardsByCustomer(customerId); if (dCardList.Count != 0) { var discountCard = (DiscountCard)dCardList[0]; discountCard.CustomerId = 0; _customerDataAccess.UpdateDiscountCard(discountCard); } }
public virtual void DeleteCustomer(Model.Customer.Customer customer) { DeleteObject(customer); }
public virtual void UpdateCustomer(Model.Customer.Customer customer) { UpdateObject(customer); }
public virtual void InsertCustomer(Model.Customer.Customer customer) { InsertObject(customer); }
public virtual Model.SaleOrder.SaleOrder RecordSaleOrder( IList saleItemList, float totalAmountInt, float totalAmountPaidInt, float totalAmountPaidRiel, float totalAmountReturnInt, Model.Customer.Customer customer, bool isReturned, string referenceNum, float discount, float depositAmount, bool fromDeposit) { if (saleItemList == null) { throw new ArgumentNullException("saleItemList", Resources.MsgInvalidSaleItem); } var factor = 1; if (isReturned) { factor = -1; } //SaleOrder var saleOrder = new Model.SaleOrder.SaleOrder { SaleOrderDate = DateTime.Now, SaleOrderTypeId = (isReturned ? 1 : 0), CustomerId = customer.CustomerId, CashierId = AppContext.User.UserId, DelivererId = 0, Description = string.Empty, PaymentTypeId = 0, CurrencyId = 0, ExchangeRate = (AppContext.ExchangeRate == null ? 0 : AppContext.ExchangeRate.ExchangeValue), AmountSoldInt = fromDeposit ? totalAmountInt : (totalAmountInt - ((totalAmountInt * discount) / 100)), DepositAmount = depositAmount }; saleOrder.AmountSoldInt *= factor; saleOrder.AmountSoldRiel = saleOrder.AmountSoldInt * saleOrder.ExchangeRate; if (isReturned) { saleOrder.AmountPaidInt = saleOrder.AmountSoldInt; saleOrder.AmountPaidRiel = 0; } else { saleOrder.AmountPaidInt = totalAmountPaidInt; saleOrder.AmountPaidRiel = totalAmountPaidRiel; } //saleOrder.AmountReturnInt = saleOrder.AmountPaidInt - saleOrder.AmountSoldInt; saleOrder.AmountReturnInt = totalAmountReturnInt; saleOrder.AmountReturnRiel = saleOrder.AmountReturnInt * saleOrder.ExchangeRate; saleOrder.Discount = discount; if (customer.FkDiscountCard != null) { saleOrder.DiscountTypeId = customer.FkDiscountCard.DiscountCardTypeId; saleOrder.CardNumber = customer.FkDiscountCard.CardNumber; } saleOrder.ReferenceNum = referenceNum; //saleOrder. InsertSaleOrder(saleOrder); //Customer var customerService = ServiceFactory.GenerateServiceInstance().GenerateCustomerService(); if (fromDeposit) { customer.PurchasedAmount += saleOrder.AmountPaidInt; customer.DebtAmount += saleOrder.AmountPaidInt; } else { customer.DebtAmount += saleOrder.AmountReturnInt; } customerService.CustomerManagement( customer, Resources.OperationRequestUpdate); //localy update SaleOrder saleOrder.FkCustomer = customer; //Sale item var productService = ServiceFactory.GenerateServiceInstance().GenerateProductService(); var isAllowed = true; foreach (var saleItem in saleItemList.Cast <SaleItem>().Where(saleItem => saleItem.ProductId != 0)) { if (isReturned) { saleItem.QtySold *= factor; } //Product productService.UpdateProduct(saleItem); //SaleItem saleItem.SaleOrderId = saleOrder.SaleOrderId; _saleOrderDataAccess.InsertSaleItem(saleItem); var saleOrderReport = new SaleOrderReport { SaleOrderId = saleOrder.SaleOrderId, SaleOrderNumber = saleOrder.SaleOrderNumber, SaleOrderDate = ((DateTime)saleOrder.SaleOrderDate), CustomerId = customer.CustomerId, CustomerName = customer.CustomerName, CashierName = AppContext.User.LogInName, ExchangeRate = saleOrder.ExchangeRate }; if (isAllowed) { saleOrderReport.AmountSoldInt = saleOrder.AmountSoldInt; saleOrderReport.AmountPaidInt = saleOrder.AmountPaidInt; saleOrderReport.AmountPaidRiel = saleOrder.AmountPaidRiel; saleOrderReport.AmountReturnInt = saleOrder.AmountReturnInt; saleOrderReport.AmountReturnRiel = saleOrder.AmountReturnRiel; saleOrderReport.DiscountTypeId = saleOrder.DiscountTypeId; saleOrderReport.TotalDiscount = saleOrder.Discount; saleOrderReport.CardNumber = saleOrder.CardNumber; saleOrderReport.ReportHeader = 1; saleOrderReport.DepositAmount = depositAmount; } saleOrderReport.SaleItemId = saleItem.SaleItemId; saleOrderReport.ProductId = saleItem.ProductId; saleOrderReport.ReferenceNum = referenceNum; if (saleItem.FkProduct != null) { saleOrderReport.CategoryStr = saleItem.FkProduct.CategoryStr; saleOrderReport.PurchaseUnitPrice = saleItem.FkProduct.UnitPriceIn; if (!string.IsNullOrEmpty(saleItem.FkProduct.ProductCode)) { var productCode = !string.IsNullOrEmpty(saleItem.FkProduct.ForeignCode) ? saleItem.FkProduct.ForeignCode : string.Empty; productCode = productCode.Replace(",", string.Empty); productCode = productCode.Replace(" ", string.Empty); saleOrderReport.ProductCode = productCode + " (" + (!string.IsNullOrEmpty(saleItem.FkProduct.ProductCode) ? saleItem.FkProduct.ProductCode : string.Empty) + ")"; saleOrderReport.ProductName = saleItem.ProductName + " (" + productCode + ")"; } } if (string.IsNullOrEmpty(saleOrderReport.ProductName)) { saleOrderReport.ProductName = saleItem.ProductName; } saleOrderReport.UnitPriceIn = saleItem.UnitPriceIn; saleOrderReport.Discount = saleItem.Discount; saleOrderReport.QtySold = saleItem.QtySold; saleOrderReport.QtyBonus = saleItem.QtyBonus; //Public Unit Price Out : Unit price after discount saleOrderReport.UnitPriceOut = saleItem.PublicUpOut; saleOrderReport.SubTotal = saleItem.PublicUpOut * saleItem.QtySold; _saleOrderDataAccess.InsertSaleOrderReport(saleOrderReport); isAllowed = false; } return(saleOrder); }
public virtual Model.Deposit.Deposit RecordDeposit( IList depositItemList, float totalAmountInt, float totalAmountPaidInt, float totalAmountPaidRiel, Model.Customer.Customer customer, string referenceNum, float discount, bool isReturned) { if (depositItemList == null) { throw new ArgumentNullException("depositItemList", Resources.ConstDepositItem); } var factor = 1; if (isReturned) { factor = -1; } //Deposit var deposit = new Model.Deposit.Deposit { DepositDate = DateTime.Now, DepositTypeId = isReturned ? 1 : 0, CustomerId = customer.CustomerId, CashierId = AppContext.User.UserId, DelivererId = 0, Description = string.Empty, PaymentTypeId = 0, CurrencyId = 0, ExchangeRate = (AppContext.ExchangeRate == null ? 0 : AppContext.ExchangeRate.ExchangeValue), AmountSoldInt = isReturned ? totalAmountInt : (totalAmountInt - ((totalAmountInt * discount) / 100)), AmountPaidInt = totalAmountPaidInt, AmountPaidRiel = totalAmountPaidRiel, Discount = discount }; deposit.AmountReturnInt = totalAmountPaidInt - deposit.AmountSoldInt; deposit.AmountSoldInt *= factor; deposit.AmountPaidInt *= factor; deposit.AmountReturnInt *= factor; deposit.AmountSoldRiel = deposit.AmountSoldInt * deposit.ExchangeRate; deposit.AmountReturnRiel = deposit.AmountReturnInt * deposit.ExchangeRate; if (customer.FkDiscountCard != null) { deposit.DiscountTypeId = customer.FkDiscountCard.DiscountCardTypeId; deposit.CardNumber = customer.FkDiscountCard.CardNumber; } deposit.ReferenceNum = referenceNum; //Deposit InsertDeposit(deposit); //Customer var customerService = ServiceFactory.GenerateServiceInstance().GenerateCustomerService(); customer.DebtAmount += deposit.AmountReturnInt; if (isReturned) { customer.PurchasedAmount += deposit.AmountPaidInt; } customerService.CustomerManagement( customer, Resources.OperationRequestUpdate); //localy update SaleOrder deposit.FkCustomer = customer; //Deposit item if (!isReturned) { foreach (DepositItem depositItem in depositItemList) { if (depositItem.ProductId == 0) { continue; } depositItem.DepositId = deposit.DepositId; _depositDataAccess.InsertDepositItem(depositItem); } } return(deposit); }