public CashSalesInvoice PaidObject(CashSalesInvoice cashSalesInvoice, decimal AmountPaid, decimal Allowance, ICashBankService _cashBankService, IReceivableService _receivableService, IReceiptVoucherService _receiptVoucherService, IReceiptVoucherDetailService _receiptVoucherDetailService, IContactService _contactService, ICashMutationService _cashMutationService, ICashSalesReturnService _cashSalesReturnService, IGeneralLedgerJournalService _generalLedgerJournalService, IAccountService _accountService, IClosingService _closingService) { cashSalesInvoice.AmountPaid = AmountPaid; cashSalesInvoice.Allowance = Allowance; if (_validator.ValidPaidObject(cashSalesInvoice, _cashBankService, _receiptVoucherService, _cashSalesReturnService, _closingService)) { CashBank cashBank = _cashBankService.GetObjectById((int)cashSalesInvoice.CashBankId.GetValueOrDefault()); cashSalesInvoice.IsBank = cashBank.IsBank; if (cashSalesInvoice.AmountPaid + cashSalesInvoice.Allowance == cashSalesInvoice.Total) { cashSalesInvoice.IsFullPayment = true; } Receivable receivable = _receivableService.GetObjectBySource(Core.Constants.Constant.ReceivableSource.CashSalesInvoice, cashSalesInvoice.Id); receivable.AllowanceAmount = Allowance; receivable.RemainingAmount = receivable.Amount - receivable.AllowanceAmount; _receivableService.UpdateObject(receivable); ReceiptVoucher receiptVoucher = _receiptVoucherService.CreateObject((int)cashSalesInvoice.CashBankId.GetValueOrDefault(), receivable.ContactId, DateTime.Now, cashSalesInvoice.AmountPaid.GetValueOrDefault() /*receivable.RemainingAmount*/, false, (DateTime)cashSalesInvoice.DueDate.GetValueOrDefault(), cashSalesInvoice.IsBank, _receiptVoucherDetailService, _receivableService, _contactService, _cashBankService); ReceiptVoucherDetail receiptVoucherDetail = _receiptVoucherDetailService.CreateObject(receiptVoucher.Id, receivable.Id, cashSalesInvoice.AmountPaid.GetValueOrDefault(), "Automatic Payment", _receiptVoucherService, _cashBankService, _receivableService); cashSalesInvoice = _repository.PaidObject(cashSalesInvoice); _generalLedgerJournalService.CreatePaidJournalForCashSalesInvoice(cashSalesInvoice, _accountService); _receiptVoucherService.ConfirmObject(receiptVoucher, (DateTime)cashSalesInvoice.ConfirmationDate.GetValueOrDefault(), _receiptVoucherDetailService, _cashBankService, _receivableService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService); } return(cashSalesInvoice); }
public ReceiptVoucher UnreconcileObject(ReceiptVoucher receiptVoucher, IReceiptVoucherDetailService _receiptVoucherDetailService, ICashMutationService _cashMutationService, ICashBankService _cashBankService, IReceivableService _receivableService) { if (_validator.ValidUnreconcileObject(receiptVoucher)) { _repository.UnreconcileObject(receiptVoucher); CashBank cashBank = _cashBankService.GetObjectById(receiptVoucher.CashBankId); IList <CashMutation> cashMutations = _cashMutationService.SoftDeleteCashMutationForReceiptVoucher(receiptVoucher, cashBank); foreach (var cashMutation in cashMutations) { _cashMutationService.ReverseCashMutateObject(cashMutation, _cashBankService); } IList <ReceiptVoucherDetail> receiptVoucherDetails = _receiptVoucherDetailService.GetObjectsByReceiptVoucherId(receiptVoucher.Id); foreach (var receiptVoucherDetail in receiptVoucherDetails) { Receivable receivable = _receivableService.GetObjectById(receiptVoucherDetail.ReceivableId); receivable.PendingClearanceAmount += receiptVoucherDetail.Amount; if (receivable.PendingClearanceAmount != 0 || receivable.RemainingAmount != 0) { receivable.IsCompleted = false; receivable.CompletionDate = null; } _receivableService.UpdateObject(receivable); } } return(receiptVoucher); }
public ReceiptVoucher ReconcileObject(ReceiptVoucher receiptVoucher, DateTime ReconciliationDate, IReceiptVoucherDetailService _receiptVoucherDetailService, ICashMutationService _cashMutationService, ICashBankService _cashBankService, IReceivableService _receivableService) { receiptVoucher.ReconciliationDate = ReconciliationDate; if (_validator.ValidReconcileObject(receiptVoucher)) { _repository.ReconcileObject(receiptVoucher); CashBank cashBank = _cashBankService.GetObjectById(receiptVoucher.CashBankId); CashMutation cashMutation = _cashMutationService.CreateCashMutationForReceiptVoucher(receiptVoucher, cashBank); _cashMutationService.CashMutateObject(cashMutation, _cashBankService); IList <ReceiptVoucherDetail> receiptVoucherDetails = _receiptVoucherDetailService.GetObjectsByReceiptVoucherId(receiptVoucher.Id); foreach (var receiptVoucherDetail in receiptVoucherDetails) { Receivable receivable = _receivableService.GetObjectById(receiptVoucherDetail.ReceivableId); receivable.PendingClearanceAmount -= receiptVoucherDetail.Amount; if (receivable.PendingClearanceAmount == 0 && receivable.RemainingAmount == 0) { receivable.IsCompleted = true; receivable.CompletionDate = DateTime.Now; } _receivableService.UpdateObject(receivable); } } return(receiptVoucher); }
public ReceiptVoucherDetail UnconfirmObject(ReceiptVoucherDetail receiptVoucherDetail, IReceiptVoucherService _receiptVoucherService, IReceivableService _receivableService) { if (_validator.ValidUnconfirmObject(receiptVoucherDetail)) { ReceiptVoucher receiptVoucher = _receiptVoucherService.GetObjectById(receiptVoucherDetail.ReceiptVoucherId); Receivable receivable = _receivableService.GetObjectById(receiptVoucherDetail.ReceivableId); if (receiptVoucher.IsGBCH) { receivable.PendingClearanceAmount -= receiptVoucherDetail.Amount; } receivable.RemainingAmount += receiptVoucherDetail.Amount; if (receivable.RemainingAmount != 0 || receivable.PendingClearanceAmount != 0) { receivable.IsCompleted = false; receivable.CompletionDate = null; } _receivableService.UpdateObject(receivable); receiptVoucherDetail = _repository.UnconfirmObject(receiptVoucherDetail); } return(receiptVoucherDetail); }
public CashSalesInvoice UnpaidObject(CashSalesInvoice cashSalesInvoice, IReceiptVoucherService _receiptVoucherService, IReceiptVoucherDetailService _receiptVoucherDetailService, ICashBankService _cashBankService, IReceivableService _receivableService, ICashMutationService _cashMutationService, ICashSalesReturnService _cashSalesReturnService, IGeneralLedgerJournalService _generalLedgerJournalService, IAccountService _accountService, IClosingService _closingService) { if (_validator.ValidUnpaidObject(cashSalesInvoice, _cashSalesReturnService, _closingService)) { Receivable receivable = _receivableService.GetObjectBySource(Core.Constants.Constant.ReceivableSource.CashSalesInvoice, cashSalesInvoice.Id); IList <ReceiptVoucher> receiptVouchers = _receiptVoucherService.GetObjectsByCashBankId((int)cashSalesInvoice.CashBankId.GetValueOrDefault()); foreach (var receiptVoucher in receiptVouchers) { if (receiptVoucher.ContactId == receivable.ContactId) { receiptVoucher.Errors = new Dictionary <string, string>(); _receiptVoucherService.UnconfirmObject(receiptVoucher, _receiptVoucherDetailService, _cashBankService, _receivableService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService); IList <ReceiptVoucherDetail> receiptVoucherDetails = _receiptVoucherDetailService.GetObjectsByReceiptVoucherId(receiptVoucher.Id); foreach (var receiptVoucherDetail in receiptVoucherDetails) { receiptVoucherDetail.Errors = new Dictionary <string, string>(); _receiptVoucherDetailService.SoftDeleteObject(receiptVoucherDetail); } _receiptVoucherService.SoftDeleteObject(receiptVoucher, _receiptVoucherDetailService); } } receivable.AllowanceAmount = 0; _receivableService.UpdateObject(receivable); cashSalesInvoice.AmountPaid = 0; cashSalesInvoice.IsFullPayment = false; cashSalesInvoice.Allowance = 0; _generalLedgerJournalService.CreateUnpaidJournalForCashSalesInvoice(cashSalesInvoice, _accountService); cashSalesInvoice = _repository.UnpaidObject(cashSalesInvoice); } return(cashSalesInvoice); }
public ReceiptVoucherDetail ConfirmObject(ReceiptVoucherDetail receiptVoucherDetail, DateTime ConfirmationDate, IReceiptVoucherService _receiptVoucherService, IReceivableService _receivableService) { receiptVoucherDetail.ConfirmationDate = ConfirmationDate; if (_validator.ValidConfirmObject(receiptVoucherDetail, _receivableService)) { ReceiptVoucher receiptVoucher = _receiptVoucherService.GetObjectById(receiptVoucherDetail.ReceiptVoucherId); Receivable receivable = _receivableService.GetObjectById(receiptVoucherDetail.ReceivableId); if (receiptVoucher.IsGBCH) { receivable.PendingClearanceAmount += receiptVoucherDetail.Amount; } receivable.RemainingAmount -= receiptVoucherDetail.Amount; if (receivable.RemainingAmount == 0 && receivable.PendingClearanceAmount == 0) { receivable.IsCompleted = true; receivable.CompletionDate = DateTime.Now; } _receivableService.UpdateObject(receivable); receiptVoucherDetail = _repository.ConfirmObject(receiptVoucherDetail); } return(receiptVoucherDetail); }