Exemplo n.º 1
0
        public IList <CashMutation> CreateCashMutationForCashBankMutation(CashBankMutation cashBankMutation, CashBank sourceCashBank, CashBank targetCashBank)
        {
            IList <CashMutation> results = new List <CashMutation>();

            CashMutation sourceCashMutation = new CashMutation();

            sourceCashMutation.CashBankId         = sourceCashBank.Id;
            sourceCashMutation.Amount             = Math.Abs(cashBankMutation.Amount);
            sourceCashMutation.MutationDate       = (DateTime)cashBankMutation.ConfirmationDate.GetValueOrDefault();
            sourceCashMutation.SourceDocumentType = MasterConstant.SourceDocumentType.CashBankMutation;
            sourceCashMutation.SourceDocumentId   = cashBankMutation.Id;
            sourceCashMutation.SourceDocumentCode = cashBankMutation.Code;
            sourceCashMutation.Status             = MasterConstant.MutationStatus.Deduction;
            _repository.CreateObject(sourceCashMutation);

            CashMutation targetCashMutation = new CashMutation();

            targetCashMutation.CashBankId         = targetCashBank.Id;
            targetCashMutation.Amount             = Math.Abs(cashBankMutation.Amount);
            targetCashMutation.MutationDate       = (DateTime)cashBankMutation.ConfirmationDate.GetValueOrDefault();
            targetCashMutation.SourceDocumentType = MasterConstant.SourceDocumentType.CashBankMutation;
            targetCashMutation.SourceDocumentId   = cashBankMutation.Id;
            targetCashMutation.SourceDocumentCode = cashBankMutation.Code;
            targetCashMutation.Status             = MasterConstant.MutationStatus.Addition;
            _repository.CreateObject(targetCashMutation);

            results.Add(sourceCashMutation);
            results.Add(targetCashMutation);
            return(results);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        public PaymentVoucher ReconcileObject(PaymentVoucher paymentVoucher, DateTime ReconciliationDate, IPaymentVoucherDetailService _paymentVoucherDetailService,
                                              ICashMutationService _cashMutationService, ICashBankService _cashBankService, IPayableService _payableService,
                                              IGeneralLedgerJournalService _generalLedgerJournalService, IAccountService _accountService, IClosingService _closingService)
        {
            paymentVoucher.ReconciliationDate = ReconciliationDate;
            if (_validator.ValidReconcileObject(paymentVoucher, _closingService))
            {
                _repository.ReconcileObject(paymentVoucher);

                CashBank     cashBank     = _cashBankService.GetObjectById(paymentVoucher.CashBankId);
                CashMutation cashMutation = _cashMutationService.CreateCashMutationForPaymentVoucher(paymentVoucher, cashBank);
                _cashMutationService.CashMutateObject(cashMutation, _cashBankService);

                IList <PaymentVoucherDetail> paymentVoucherDetails = _paymentVoucherDetailService.GetObjectsByPaymentVoucherId(paymentVoucher.Id);
                foreach (var paymentVoucherDetail in paymentVoucherDetails)
                {
                    Payable payable = _payableService.GetObjectById(paymentVoucherDetail.PayableId);
                    payable.PendingClearanceAmount -= paymentVoucherDetail.Amount;
                    if (payable.PendingClearanceAmount == 0 && payable.RemainingAmount == 0)
                    {
                        payable.IsCompleted    = true;
                        payable.CompletionDate = DateTime.Now;
                    }
                    _payableService.UpdateObject(payable);
                }
            }
            return(paymentVoucher);
        }
Exemplo n.º 4
0
        public PaymentVoucher ConfirmObject(PaymentVoucher paymentVoucher, DateTime ConfirmationDate, IPaymentVoucherDetailService _paymentVoucherDetailService,
                                            ICashBankService _cashBankService, IPayableService _payableService, ICashMutationService _cashMutationService,
                                            IGeneralLedgerJournalService _generalLedgerJournalService, IAccountService _accountService, IClosingService _closingService)
        {
            paymentVoucher.ConfirmationDate = ConfirmationDate;
            if (_validator.ValidConfirmObject(paymentVoucher, this, _paymentVoucherDetailService, _cashBankService, _payableService, _closingService))
            {
                IList <PaymentVoucherDetail> details = _paymentVoucherDetailService.GetObjectsByPaymentVoucherId(paymentVoucher.Id);
                foreach (var detail in details)
                {
                    detail.Errors = new Dictionary <string, string>();
                    _paymentVoucherDetailService.ConfirmObject(detail, ConfirmationDate, this, _payableService);
                }

                _repository.ConfirmObject(paymentVoucher);

                if (!paymentVoucher.IsGBCH)
                {
                    CashBank     cashBank     = _cashBankService.GetObjectById(paymentVoucher.CashBankId);
                    CashMutation cashMutation = _cashMutationService.CreateCashMutationForPaymentVoucher(paymentVoucher, cashBank);
                    _cashMutationService.CashMutateObject(cashMutation, _cashBankService);
                    _generalLedgerJournalService.CreateConfirmationJournalForPaymentVoucher(paymentVoucher, cashBank, _accountService);
                }
            }
            return(paymentVoucher);
        }
Exemplo n.º 5
0
 public CashMutation VNonNegativeNorZeroAmount(CashMutation cashMutation)
 {
     if (cashMutation.Amount <= 0)
     {
         cashMutation.Errors.Add("Amout", "Tidak boleh negatif atau 0");
     }
     return(cashMutation);
 }
Exemplo n.º 6
0
        public void ReverseCashMutateObject(CashMutation cashMutation, ICashBankService _cashBankService)
        {
            decimal  Amount   = (cashMutation.Status == MasterConstant.MutationStatus.Deduction) ? cashMutation.Amount : (-1) * cashMutation.Amount;
            CashBank cashBank = _cashBankService.GetObjectById(cashMutation.CashBankId);

            cashBank.Amount += Amount;
            _cashBankService.UpdateObject(cashBank);
        }
Exemplo n.º 7
0
 public CashMutation VStatus(CashMutation cashMutation)
 {
     if (!cashMutation.Status.Equals(Constant.MutationStatus.Addition) &&
         !cashMutation.Status.Equals(Constant.MutationStatus.Deduction))
     {
         cashMutation.Errors.Add("Status", "Harus merupakan bagian dari Constant.CashMutationStatus");
     }
     return(cashMutation);
 }
Exemplo n.º 8
0
        public CashMutation VHasCashBank(CashMutation cashMutation, ICashBankService _cashBankService)
        {
            CashBank cashBank = _cashBankService.GetObjectById(cashMutation.CashBankId);

            if (cashBank == null)
            {
                cashMutation.Errors.Add("CashBankId", "Tidak terasosiasi dengan cashBank");
            }
            return(cashMutation);
        }
Exemplo n.º 9
0
 public CashMutation VSourceDocumentType(CashMutation cashMutation)
 {
     if (!cashMutation.SourceDocumentType.Equals(Constant.SourceDocumentType.CashBankAdjustment) &&
         !cashMutation.SourceDocumentType.Equals(Constant.SourceDocumentType.PaymentVoucher) &&
         !cashMutation.SourceDocumentType.Equals(Constant.SourceDocumentType.ReceiptVoucher))
     {
         cashMutation.Errors.Add("SourceDocumentType", "Harus merupakan bagian dari Constant.SourceDocumentType");
     }
     return(cashMutation);
 }
Exemplo n.º 10
0
        public CashMutation CreateCashMutationForCashBankAdjustment(CashBankAdjustment cashBankAdjustment, CashBank cashBank)
        {
            CashMutation cashMutation = new CashMutation();

            cashMutation.CashBankId         = cashBank.Id;
            cashMutation.Amount             = Math.Abs(cashBankAdjustment.Amount);
            cashMutation.MutationDate       = (DateTime)cashBankAdjustment.ConfirmationDate;
            cashMutation.SourceDocumentType = Constant.SourceDocumentType.CashBankAdjustment;
            cashMutation.SourceDocumentId   = cashBankAdjustment.Id;
            cashMutation.Status             = (cashBankAdjustment.Amount >= 0) ? Constant.MutationStatus.Addition : Constant.MutationStatus.Deduction;
            return(_repository.CreateObject(cashMutation));
        }
Exemplo n.º 11
0
        public CashMutation CreateCashMutationForReceiptVoucher(ReceiptVoucher receiptVoucher, CashBank cashBank)
        {
            CashMutation cashMutation = new CashMutation();

            cashMutation.CashBankId         = cashBank.Id;
            cashMutation.Amount             = Math.Abs(receiptVoucher.TotalAmount);
            cashMutation.MutationDate       = receiptVoucher.IsGBCH ? (DateTime)receiptVoucher.ReconciliationDate : (DateTime)receiptVoucher.ConfirmationDate;
            cashMutation.SourceDocumentType = Constant.SourceDocumentType.ReceiptVoucher;
            cashMutation.SourceDocumentId   = receiptVoucher.Id;
            cashMutation.Status             = Constant.MutationStatus.Addition;
            return(_repository.CreateObject(cashMutation));
        }
Exemplo n.º 12
0
        public CashMutation CreateCashMutationForPaymentVoucher(PaymentVoucher paymentVoucher, CashBank cashBank)
        {
            CashMutation cashMutation = new CashMutation();

            cashMutation.CashBankId         = cashBank.Id;
            cashMutation.Amount             = Math.Abs(paymentVoucher.TotalAmount);
            cashMutation.MutationDate       = paymentVoucher.IsGBCH ? (DateTime)paymentVoucher.ReconciliationDate.GetValueOrDefault() : (DateTime)paymentVoucher.ConfirmationDate.GetValueOrDefault();
            cashMutation.SourceDocumentType = MasterConstant.SourceDocumentType.PaymentVoucher;
            cashMutation.SourceDocumentId   = paymentVoucher.Id;
            cashMutation.SourceDocumentCode = paymentVoucher.Code;
            cashMutation.Status             = MasterConstant.MutationStatus.Deduction;
            return(_repository.CreateObject(cashMutation));
        }
 public CashBankAdjustment ConfirmObject(CashBankAdjustment cashBankAdjustment, DateTime ConfirmationDate, ICashMutationService _cashMutationService, ICashBankService _cashBankService)
 {
     cashBankAdjustment.ConfirmationDate = ConfirmationDate;
     if (_validator.ValidConfirmObject(cashBankAdjustment, _cashBankService))
     {
         CashBank     cashBank     = _cashBankService.GetObjectById(cashBankAdjustment.CashBankId);
         CashMutation cashMutation = _cashMutationService.CreateCashMutationForCashBankAdjustment(cashBankAdjustment, cashBank);
         // cashBank.Amount += cashBankAdjustment.Amount;
         _cashMutationService.CashMutateObject(cashMutation, _cashBankService);
         _repository.ConfirmObject(cashBankAdjustment);
     }
     return(cashBankAdjustment);
 }
Exemplo n.º 14
0
        public string PrintError(CashMutation obj)
        {
            string erroroutput = "";
            KeyValuePair <string, string> first = obj.Errors.ElementAt(0);

            erroroutput += first.Key + "," + first.Value;
            foreach (KeyValuePair <string, string> pair in obj.Errors.Skip(1))
            {
                erroroutput += Environment.NewLine;
                erroroutput += pair.Key + "," + pair.Value;
            }
            return(erroroutput);
        }
Exemplo n.º 15
0
 public CashMutation VCreateObject(CashMutation cashMutation, ICashBankService _cashBankService)
 {
     VHasCashBank(cashMutation, _cashBankService);
     if (!isValid(cashMutation))
     {
         return(cashMutation);
     }
     VStatus(cashMutation);
     if (!isValid(cashMutation))
     {
         return(cashMutation);
     }
     VSourceDocumentType(cashMutation);
     if (!isValid(cashMutation))
     {
         return(cashMutation);
     }
     VNonNegativeNorZeroAmount(cashMutation);
     return(cashMutation);
 }
Exemplo n.º 16
0
        public ReceiptVoucher ConfirmObject(ReceiptVoucher receiptVoucher, DateTime ConfirmationDate, IReceiptVoucherDetailService _receiptVoucherDetailService,
                                            ICashBankService _cashBankService, IReceivableService _receivableService, ICashMutationService _cashMutationService)
        {
            receiptVoucher.ConfirmationDate = ConfirmationDate;
            if (_validator.ValidConfirmObject(receiptVoucher, this, _receiptVoucherDetailService, _cashBankService, _receivableService))
            {
                IList <ReceiptVoucherDetail> details = _receiptVoucherDetailService.GetObjectsByReceiptVoucherId(receiptVoucher.Id);
                foreach (var detail in details)
                {
                    detail.Errors = new Dictionary <string, string>();
                    _receiptVoucherDetailService.ConfirmObject(detail, ConfirmationDate, this, _receivableService);
                }
                _repository.ConfirmObject(receiptVoucher);

                if (!receiptVoucher.IsGBCH)
                {
                    CashBank     cashBank     = _cashBankService.GetObjectById(receiptVoucher.CashBankId);
                    CashMutation cashMutation = _cashMutationService.CreateCashMutationForReceiptVoucher(receiptVoucher, cashBank);
                    _cashMutationService.CashMutateObject(cashMutation, _cashBankService);
                }
            }
            return(receiptVoucher);
        }
Exemplo n.º 17
0
        public bool isValid(CashMutation obj)
        {
            bool isValid = !obj.Errors.Any();

            return(isValid);
        }
Exemplo n.º 18
0
 public bool ValidDeleteObject(CashMutation cashMutation)
 {
     cashMutation.Errors.Clear();
     VDeleteObject(cashMutation);
     return(isValid(cashMutation));
 }
Exemplo n.º 19
0
 public bool ValidCreateObject(CashMutation cashMutation, ICashBankService _cashBankService)
 {
     VCreateObject(cashMutation, _cashBankService);
     return(isValid(cashMutation));
 }
Exemplo n.º 20
0
 public CashMutation VDeleteObject(CashMutation cashMutation)
 {
     return(cashMutation);
 }
Exemplo n.º 21
0
 public CashMutation CreateObject(CashMutation cashMutation, ICashBankService _cashBankService)
 {
     cashMutation.Errors = new Dictionary <String, String>();
     return(_validator.ValidCreateObject(cashMutation, _cashBankService) ? _repository.CreateObject(cashMutation) : cashMutation);
 }
Exemplo n.º 22
0
 public CashMutation SoftDeleteObject(CashMutation cashMutation)
 {
     return(_validator.ValidDeleteObject(cashMutation) ? _repository.SoftDeleteObject(cashMutation) : cashMutation);
 }