Ejemplo n.º 1
0
 public StatementOfAccountBL(ICmsUoW unitOfWork)
     : base(unitOfWork)
 {
     _unitOfWork       = unitOfWork;
     soaPaymentService = new StatementOfAccountPaymentBL(unitOfWork);
     paymentService    = new PaymentBL(unitOfWork);
 }
Ejemplo n.º 2
0
        /// <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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 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);
 }