public StatementOfAccountBL(ICmsUoW unitOfWork) : base(unitOfWork) { _unitOfWork = unitOfWork; soaPaymentService = new StatementOfAccountPaymentBL(unitOfWork); paymentService = new PaymentBL(unitOfWork); }
/// <summary> /// Payment made to specified Shipment/AWB /// </summary> /// <param name="soaPayment"></param> /// <param name="shipmentPayments"></param> public void MakePayment(StatementOfAccountPayment soaPayment, List <Payment> shipmentPayments) { StatementOfAccountPayment _soaPayment = new StatementOfAccountPayment() { StatementOfAccountPaymentId = Guid.NewGuid(), StatementOfAccountId = soaPayment.StatementOfAccountId, PaymentDate = soaPayment.PaymentDate, OrNo = soaPayment.OrNo, Amount = soaPayment.Amount, PaymentTypeId = soaPayment.PaymentTypeId, CheckBankName = soaPayment.CheckBankName, CheckNo = soaPayment.CheckNo, CheckDate = soaPayment.CheckDate, ReceivedById = soaPayment.ReceivedById, Remarks = soaPayment.Remarks, CreatedBy = soaPayment.CreatedBy, CreatedDate = DateTime.Now, ModifiedBy = soaPayment.ModifiedBy, ModifiedDate = DateTime.Now, RecordStatus = (int)RecordStatus.Active }; soaPaymentService.Add(_soaPayment); PaymentBL paymentService = new PaymentBL(_unitOfWork); foreach (var payment in shipmentPayments) { payment.PaymentId = Guid.NewGuid(); payment.CreatedDate = DateTime.Now; payment.ModifiedDate = DateTime.Now; payment.RecordStatus = (int)RecordStatus.Active; payment.StatementOfAccountPaymentId = _soaPayment.StatementOfAccountPaymentId; paymentService.Add(payment); } // update Shipments to paid when no more balance List <Shipment> shipments = shipmentService.FilterActiveBy(x => x.StatementOfAccountId == soaPayment.StatementOfAccountId && x.DateOfFullPayment == null).ToList(); if (shipments != null) { List <ShipmentModel> models = shipmentService.EntitiesToModels(shipments); models = shipmentService.ComputeBalances(models, null); foreach (var item in models) { // TODO bug not updating if (item.PreviousBalance <= 0) { item.DateOfFullPayment = DateTime.Now; item.ModifiedBy = soaPayment.ModifiedBy; item.ModifiedDate = DateTime.Now; var entity = shipmentService.ModelToEntity(item); shipmentService.Edit(entity); } } } }
public StatementOfAccountBL() { _unitOfWork = GetUnitOfWork(); companyService = new CompanyBL(_unitOfWork); shipmentService = new ShipmentBL(_unitOfWork); paymentTypeService = new PaymentTypeBL(_unitOfWork); shipmentAdjustmentService = new ShipmentAdjustmentBL(_unitOfWork); soaPaymentService = new StatementOfAccountPaymentBL(_unitOfWork); paymentService = new PaymentBL(_unitOfWork); }