Пример #1
0
 public bool ValidPaidObject(CashSalesInvoice cashSalesInvoice, ICashBankService _cashBankService, IReceiptVoucherService _receiptVoucherService,
                             ICashSalesReturnService _cashSalesReturnService, IClosingService _closingService)
 {
     cashSalesInvoice.Errors.Clear();
     VPaidObject(cashSalesInvoice, _cashBankService, _receiptVoucherService, _cashSalesReturnService, _closingService);
     return(isValid(cashSalesInvoice));
 }
 public CashSalesInvoiceDetail ConfirmObject(CashSalesInvoiceDetail cashSalesInvoiceDetail, ICashSalesInvoiceService _cashSalesInvoiceService, IWarehouseItemService _warehouseItemService,
                                             IWarehouseService _warehouseService, IItemService _itemService, IBarringService _barringService, IStockMutationService _stockMutationService)
 {
     if (_validator.ValidConfirmObject(cashSalesInvoiceDetail, _cashSalesInvoiceService, _warehouseItemService))
     {
         CashSalesInvoice cashSalesInvoice = _cashSalesInvoiceService.GetObjectById(cashSalesInvoiceDetail.CashSalesInvoiceId);
         WarehouseItem    warehouseItem    = _warehouseItemService.FindOrCreateObject(cashSalesInvoice.WarehouseId, cashSalesInvoiceDetail.ItemId);
         Item             item             = _itemService.GetObjectById(cashSalesInvoiceDetail.ItemId);
         StockMutation    stockMutation    = new StockMutation()
         {
             ItemId                   = cashSalesInvoiceDetail.ItemId,
             ItemCase                 = Core.Constants.Constant.ItemCase.Ready,
             Status                   = Core.Constants.Constant.MutationStatus.Deduction,
             Quantity                 = cashSalesInvoiceDetail.Quantity,
             SourceDocumentCode       = cashSalesInvoice.Code,
             SourceDocumentId         = cashSalesInvoice.Id,
             SourceDocumentType       = Core.Constants.Constant.SourceDocumentType.CashSalesInvoice,
             SourceDocumentDetailCode = cashSalesInvoiceDetail.Code,
             SourceDocumentDetailId   = cashSalesInvoiceDetail.Id,
             SourceDocumentDetailType = Core.Constants.Constant.SourceDocumentDetailType.CashSalesInvoiceDetail,
             WarehouseId              = cashSalesInvoice.WarehouseId,
             WarehouseItemId          = warehouseItem.Id
         };
         stockMutation           = _stockMutationService.CreateObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService);
         stockMutation.CreatedAt = (DateTime)cashSalesInvoice.ConfirmationDate.GetValueOrDefault();
         _stockMutationService.UpdateObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService);
         _stockMutationService.StockMutateObject(stockMutation, _itemService, _barringService, _warehouseItemService);
         cashSalesInvoiceDetail.CoGS = cashSalesInvoiceDetail.Quantity * item.AvgPrice;
         cashSalesInvoiceDetail      = _repository.ConfirmObject(cashSalesInvoiceDetail);
     }
     return(cashSalesInvoiceDetail);
 }
Пример #3
0
        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);
        }
Пример #4
0
        public dynamic Insert(CashSalesInvoice model)
        {
            try
            {
                if (!AuthenticationModel.IsAllowed("Create", Core.Constants.Constant.MenuName.CashSalesInvoice, Core.Constants.Constant.MenuGroupName.Transaction))
                {
                    Dictionary <string, string> Errors = new Dictionary <string, string>();
                    Errors.Add("Generic", "You are Not Allowed to Add record");

                    return(Json(new
                    {
                        Errors
                    }, JsonRequestBehavior.AllowGet));
                }

                model = _cashSalesInvoiceService.CreateObject(model, _warehouseService, _cashBankService);
            }
            catch (Exception ex)
            {
                LOG.Error("Insert Failed", ex);
                Dictionary <string, string> Errors = new Dictionary <string, string>();
                Errors.Add("Generic", "Error " + ex);

                return(Json(new
                {
                    Errors
                }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new
            {
                model.Errors
            }));
        }
Пример #5
0
        public dynamic Delete(CashSalesInvoice model)
        {
            try
            {
                if (!AuthenticationModel.IsAllowed("Delete", Core.Constants.Constant.MenuName.CashSalesInvoice, Core.Constants.Constant.MenuGroupName.Transaction))
                {
                    Dictionary <string, string> Errors = new Dictionary <string, string>();
                    Errors.Add("Generic", "You are Not Allowed to Delete Record");

                    return(Json(new
                    {
                        Errors
                    }, JsonRequestBehavior.AllowGet));
                }

                var data = _cashSalesInvoiceService.GetObjectById(model.Id);
                model = _cashSalesInvoiceService.SoftDeleteObject(data, _cashSalesInvoiceDetailService);
            }
            catch (Exception ex)
            {
                LOG.Error("Delete Failed", ex);
                Dictionary <string, string> Errors = new Dictionary <string, string>();
                Errors.Add("Generic", "Error " + ex);

                return(Json(new
                {
                    Errors
                }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new
            {
                model.Errors
            }));
        }
Пример #6
0
 public bool ValidConfirmObject(CashSalesInvoice cashSalesInvoice, ICashSalesInvoiceDetailService _cashSalesInvoiceDetailService, ICashSalesInvoiceService _cashSalesInvoiceService,
                                IWarehouseItemService _warehouseItemService, IContactService _contactService, ICashBankService _cashBankService, IClosingService _closingService)
 {
     cashSalesInvoice.Errors.Clear();
     VConfirmObject(cashSalesInvoice, _cashSalesInvoiceDetailService, _cashSalesInvoiceService, _warehouseItemService, _contactService, _cashBankService, _closingService);
     return(isValid(cashSalesInvoice));
 }
Пример #7
0
 public CashSalesInvoice VUnconfirmObject(CashSalesInvoice cashSalesInvoice, ICashSalesInvoiceDetailService _cashSalesInvoiceDetailService,
                                          IReceivableService _receivableService, IReceiptVoucherDetailService _receiptVoucherDetailService,
                                          IClosingService _closingService)
 {
     VIsNotDeleted(cashSalesInvoice);
     if (!isValid(cashSalesInvoice))
     {
         return(cashSalesInvoice);
     }
     VIsConfirmed(cashSalesInvoice);
     if (!isValid(cashSalesInvoice))
     {
         return(cashSalesInvoice);
     }
     VIsNotPaid(cashSalesInvoice);
     if (!isValid(cashSalesInvoice))
     {
         return(cashSalesInvoice);
     }
     VIsUnconfirmableCashSalesInvoiceDetails(cashSalesInvoice, _cashSalesInvoiceDetailService);
     if (!isValid(cashSalesInvoice))
     {
         return(cashSalesInvoice);
     }
     VHasNoReceiptVoucherDetails(cashSalesInvoice, _receivableService, _receiptVoucherDetailService);
     if (!isValid(cashSalesInvoice))
     {
         return(cashSalesInvoice);
     }
     VGeneralLedgerPostingHasNotBeenClosed(cashSalesInvoice, _closingService, 2);
     return(cashSalesInvoice);
 }
Пример #8
0
 public CashSalesInvoice UnconfirmObject(CashSalesInvoice cashSalesInvoice, ICashSalesInvoiceDetailService _cashSalesInvoiceDetailService,
                                         IReceivableService _receivableService, IReceiptVoucherDetailService _receiptVoucherDetailService,
                                         IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService, IItemService _itemService,
                                         IBarringService _barringService, IStockMutationService _stockMutationService,
                                         IGeneralLedgerJournalService _generalLedgerJournalService, IAccountService _accountService,
                                         IClosingService _closingService)
 {
     if (_validator.ValidUnconfirmObject(cashSalesInvoice, _cashSalesInvoiceDetailService, _receivableService, _receiptVoucherDetailService,
                                         _closingService))
     {
         IList <CashSalesInvoiceDetail> cashSalesInvoiceDetails = _cashSalesInvoiceDetailService.GetObjectsByCashSalesInvoiceId(cashSalesInvoice.Id);
         foreach (var cashSalesInvoiceDetail in cashSalesInvoiceDetails)
         {
             cashSalesInvoiceDetail.Errors = new Dictionary <string, string>();
             _cashSalesInvoiceDetailService.UnconfirmObject(cashSalesInvoiceDetail, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService);
         }
         Receivable receivable = _receivableService.GetObjectBySource(Core.Constants.Constant.ReceivableSource.CashSalesInvoice, cashSalesInvoice.Id);
         _receivableService.SoftDeleteObject(receivable);
         _generalLedgerJournalService.CreateUnconfirmationJournalForCashSalesInvoice(cashSalesInvoice, _accountService);
         cashSalesInvoice.CoGS     = 0;
         cashSalesInvoice.Total    = 0;
         cashSalesInvoice.Discount = 0;
         cashSalesInvoice.Tax      = 0;
         cashSalesInvoice          = _repository.UnconfirmObject(cashSalesInvoice);
     }
     return(cashSalesInvoice);
 }
        public IList <GeneralLedgerJournal> CreateUnpaidJournalForCashSalesInvoice(CashSalesInvoice cashSalesInvoice, IAccountService _accountService)
        {
            IList <GeneralLedgerJournal> journals = new List <GeneralLedgerJournal>();
            DateTime UnconfirmationDate           = DateTime.Now;

            GeneralLedgerJournal credittotal = new GeneralLedgerJournal()
            {
                AccountId        = _accountService.GetObjectByLegacyCode(Constant.AccountLegacyCode.AccountReceivable).Id,
                SourceDocument   = Constant.GeneralLedgerSource.CashSalesInvoice,
                SourceDocumentId = cashSalesInvoice.Id,
                TransactionDate  = UnconfirmationDate,
                Status           = Constant.GeneralLedgerStatus.Credit,
                Amount           = cashSalesInvoice.AmountPaid.GetValueOrDefault()
            };

            credittotal = CreateObject(credittotal, _accountService);

            GeneralLedgerJournal debitrevenue = new GeneralLedgerJournal()
            {
                AccountId        = _accountService.GetObjectByLegacyCode(Constant.AccountLegacyCode.Revenue).Id,
                SourceDocument   = Constant.GeneralLedgerSource.CashSalesInvoice,
                SourceDocumentId = cashSalesInvoice.Id,
                TransactionDate  = UnconfirmationDate,
                Status           = Constant.GeneralLedgerStatus.Debit,
                Amount           = cashSalesInvoice.AmountPaid.GetValueOrDefault()
            };

            debitrevenue = CreateObject(debitrevenue, _accountService);

            journals.Add(credittotal);
            journals.Add(debitrevenue);

            return(journals);
        }
Пример #10
0
 public CashSalesInvoice VIsValidTax(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.Tax < 0 || cashSalesInvoice.Tax > 100)
     {
         cashSalesInvoice.Errors.Add("Tax", "Harus diantara 0 sampai 100");
     }
     return(cashSalesInvoice);
 }
Пример #11
0
 public CashSalesInvoice VIsValidAllowance(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.Allowance < 0 || cashSalesInvoice.Allowance > cashSalesInvoice.Total)
     {
         cashSalesInvoice.Errors.Add("Allowance", "Harus diantara 0 sampai Total");
     }
     return(cashSalesInvoice);
 }
Пример #12
0
 public CashSalesInvoice VIsNotPaid(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.IsPaid)
     {
         cashSalesInvoice.Errors.Add("Generic", "CashSalesInvoice sudah terbayar");
     }
     return(cashSalesInvoice);
 }
Пример #13
0
 public bool ValidUnconfirmObject(CashSalesInvoice cashSalesInvoice, ICashSalesInvoiceDetailService _cashSalesInvoiceDetailService,
                                  IReceivableService _receivableService, IReceiptVoucherDetailService _receiptVoucherDetailService,
                                  IClosingService _closingService)
 {
     cashSalesInvoice.Errors.Clear();
     VUnconfirmObject(cashSalesInvoice, _cashSalesInvoiceDetailService, _receivableService, _receiptVoucherDetailService, _closingService);
     return(isValid(cashSalesInvoice));
 }
Пример #14
0
 public CashSalesInvoice VIsValidDiscount(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.Discount < 0 || cashSalesInvoice.Discount > 100)
     {
         cashSalesInvoice.Errors.Add("Discount", "Harus diantara 0 sampai 100");
     }
     return(cashSalesInvoice);
 }
Пример #15
0
 public CashSalesInvoice VTotalPaymentIsEqualOrLessThanTotalPayable(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.AmountPaid + cashSalesInvoice.Allowance > cashSalesInvoice.Total)
     {
         cashSalesInvoice.Errors.Add("Generic", "Amount Paid + Allowance lebih dari Total Payable");
     }
     return(cashSalesInvoice);
 }
Пример #16
0
 public CashSalesInvoice VIsValidFullPayment(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.AmountPaid + cashSalesInvoice.Allowance != cashSalesInvoice.Total)
     {
         cashSalesInvoice.Errors.Add("Generic", "Amount Paid + Allowance harus dengan Total Payable");
     }
     return(cashSalesInvoice);
 }
Пример #17
0
 public CashSalesInvoice VIsValidAmountPaid(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.AmountPaid > cashSalesInvoice.Total)
     {
         cashSalesInvoice.Errors.Add("AmountPaid", "Harus lebih kecil atau sama dengan Total Payable");
     }
     return(cashSalesInvoice);
 }
Пример #18
0
 public CashSalesInvoice VIsConfirmed(CashSalesInvoice cashSalesInvoice)
 {
     if (!cashSalesInvoice.IsConfirmed)
     {
         cashSalesInvoice.Errors.Add("Generic", "CashSalesInvoice tidak terkonfirmasi");
     }
     return(cashSalesInvoice);
 }
Пример #19
0
 public CashSalesInvoice VIsPaid(CashSalesInvoice cashSalesInvoice)
 {
     if (!cashSalesInvoice.IsPaid)
     {
         cashSalesInvoice.Errors.Add("Generic", "CashSalesInvoice belum dibayar");
     }
     return(cashSalesInvoice);
 }
Пример #20
0
 public CashSalesInvoice VHasSalesDate(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.SalesDate == null || cashSalesInvoice.SalesDate.Equals(DateTime.FromBinary(0)))
     {
         cashSalesInvoice.Errors.Add("SalesDate", "Tidak ada");
     }
     return(cashSalesInvoice);
 }
Пример #21
0
 public CashSalesInvoice VIsNotDeleted(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.IsDeleted)
     {
         cashSalesInvoice.Errors.Add("Generic", "CashSalesInvoice tidak boleh terhapus");
     }
     return(cashSalesInvoice);
 }
        public CashSalesInvoiceDetail VHasCashSalesInvoice(CashSalesInvoiceDetail cashSalesInvoiceDetail, ICashSalesInvoiceService _cashSalesInvoiceService)
        {
            CashSalesInvoice cashSalesInvoice = _cashSalesInvoiceService.GetObjectById(cashSalesInvoiceDetail.CashSalesInvoiceId);

            if (cashSalesInvoice == null)
            {
                cashSalesInvoiceDetail.Errors.Add("CashSalesInvoiceId", "Tidak valid");
            }
            return(cashSalesInvoiceDetail);
        }
Пример #23
0
        public CashSalesInvoice VHasCashBank(CashSalesInvoice cashSalesInvoice, ICashBankService _cashBankService)
        {
            CashBank cashBank = _cashBankService.GetObjectById((int)cashSalesInvoice.CashBankId.GetValueOrDefault());

            if (cashBank == null)
            {
                cashSalesInvoice.Errors.Add("CashBankId", "Tidak valid");
            }
            return(cashSalesInvoice);
        }
Пример #24
0
        public CashSalesReturn VHasCashSalesInvoice(CashSalesReturn cashSalesReturn, ICashSalesInvoiceService _cashSalesInvoiceService)
        {
            CashSalesInvoice cashSalesInvoice = _cashSalesInvoiceService.GetObjectById(cashSalesReturn.CashSalesInvoiceId);

            if (cashSalesInvoice == null)
            {
                cashSalesReturn.Errors.Add("CashSalesInvoiceId", "Tidak valid");
            }
            return(cashSalesReturn);
        }
Пример #25
0
        public CashSalesInvoice VHasCashSalesInvoiceDetails(CashSalesInvoice cashSalesInvoice, ICashSalesInvoiceDetailService _cashSalesInvoiceDetailService)
        {
            IList <CashSalesInvoiceDetail> cashSalesInvoiceDetails = _cashSalesInvoiceDetailService.GetObjectsByCashSalesInvoiceId(cashSalesInvoice.Id);

            if (!cashSalesInvoiceDetails.Any())
            {
                cashSalesInvoice.Errors.Add("Generic", "CashSalesInvoiceDetils Tidak ada");
            }
            return(cashSalesInvoice);
        }
Пример #26
0
        public CashSalesInvoice VHasWarehouse(CashSalesInvoice cashSalesInvoice, IWarehouseService _warehouseService)
        {
            Warehouse warehouse = _warehouseService.GetObjectById(cashSalesInvoice.WarehouseId);

            if (warehouse == null)
            {
                cashSalesInvoice.Errors.Add("WarehouseId", "Tidak valid");
            }
            return(cashSalesInvoice);
        }
Пример #27
0
        public CashSalesInvoice VHasNoCashSalesReturns(CashSalesInvoice cashSalesInvoice, ICashSalesReturnService _cashSalesReturnService)
        {
            IList <CashSalesReturn> cashSalesReturns = _cashSalesReturnService.GetObjectsByCashSalesInvoiceId(cashSalesInvoice.Id);

            if (cashSalesReturns.Any())
            {
                cashSalesInvoice.Errors.Add("Generic", "Tidak boleh terasosiasi dengan CashSalesReturns");
            }
            return(cashSalesInvoice);
        }
Пример #28
0
 public CashSalesInvoice VHasConfirmationDate(CashSalesInvoice cashSalesInvoice)
 {
     if (cashSalesInvoice.ConfirmationDate == null || cashSalesInvoice.ConfirmationDate.Equals(DateTime.FromBinary(0)))
     {
         cashSalesInvoice.Errors.Add("ConfirmationDate", "Tidak ada");
     }
     //else if (cashSalesInvoice.ConfirmationDate.GetValueOrDefault().Date.AddDays(1) < cashSalesInvoice.SalesDate.Date)
     //{
     //    cashSalesInvoice.Errors.Add("ConfirmationDate", "Harus lebih besar atau sama dengan Sales Date");
     //}
     return(cashSalesInvoice);
 }
        public CashSalesInvoiceDetail VIsValidQuantity(CashSalesInvoiceDetail cashSalesInvoiceDetail, ICashSalesInvoiceService _cashSalesInvoiceService, IWarehouseItemService _warehouseItemService)
        {
            CashSalesInvoice cashSalesInvoice = _cashSalesInvoiceService.GetObjectById(cashSalesInvoiceDetail.CashSalesInvoiceId);
            WarehouseItem    warehouseItem    = _warehouseItemService.FindOrCreateObject(cashSalesInvoice.WarehouseId, cashSalesInvoiceDetail.ItemId);

            if (cashSalesInvoiceDetail.Quantity <= 0 || cashSalesInvoiceDetail.Quantity > warehouseItem.Quantity)
            {
                cashSalesInvoiceDetail.Errors.Add("Quantity", "Quantity harus lebih besar dari 0 dan lebih kecil atau sama dengan WarehouseItem Quantity");
                return(cashSalesInvoiceDetail);
            }
            return(cashSalesInvoiceDetail);
        }
        /*public CashSalesInvoiceDetail VHasQuantityPricing(CashSalesInvoiceDetail cashSalesInvoiceDetail, IItemService _itemService, IQuantityPricingService _quantityPricingService)
         * {
         *  Item item = _itemService.GetObjectById(cashSalesInvoiceDetail.ItemId);
         *  IList<QuantityPricing> quantityPricings = _quantityPricingService.GetObjectsByItemTypeId(item.ItemTypeId);
         *  if (quantityPricings.Any())
         *  {
         *      cashSalesInvoiceDetail.Errors.Add("Generic", "Tidak ada QuantityPricing terasosiasi");
         *  }
         *  return cashSalesInvoiceDetail;
         * }*/

        public CashSalesInvoiceDetail VIsValidQuantityOrdered(CashSalesInvoiceDetail cashSalesInvoiceDetail, ICashSalesInvoiceService _cashSalesInvoiceService, IWarehouseItemService _warehouseItemService)
        {
            CashSalesInvoice cashSalesInvoice = _cashSalesInvoiceService.GetObjectById(cashSalesInvoiceDetail.CashSalesInvoiceId);
            WarehouseItem    warehouseItem    = _warehouseItemService.FindOrCreateObject(cashSalesInvoice.WarehouseId, cashSalesInvoiceDetail.ItemId);

            if (warehouseItem.Quantity - cashSalesInvoiceDetail.Quantity < 0)
            {
                cashSalesInvoiceDetail.Errors.Add("Generic", "Quantity harus lebih kecil atau sama dengan WarehouseItem Quantity");
                return(cashSalesInvoiceDetail);
            }
            return(cashSalesInvoiceDetail);
        }