public bool ValidUpdateObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService,
                               IRetailPurchaseInvoiceDetailService _retailPurchaseInvoiceDetailService, IItemService _itemService, IWarehouseItemService _warehouseItemService)
 {
     retailPurchaseInvoiceDetail.Errors.Clear();
     VUpdateObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _retailPurchaseInvoiceDetailService, _itemService, _warehouseItemService);
     return(isValid(retailPurchaseInvoiceDetail));
 }
 public RetailPurchaseInvoiceDetail VCreateObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService,
                                                  IRetailPurchaseInvoiceDetailService _retailPurchaseInvoiceDetailService, IItemService _itemService, IWarehouseItemService _warehouseItemService)
 {
     VIsParentNotConfirmed(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService);
     if (!isValid(retailPurchaseInvoiceDetail))
     {
         return(retailPurchaseInvoiceDetail);
     }
     VHasRetailPurchaseInvoice(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService);
     if (!isValid(retailPurchaseInvoiceDetail))
     {
         return(retailPurchaseInvoiceDetail);
     }
     VIsValidQuantity(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _warehouseItemService);
     if (!isValid(retailPurchaseInvoiceDetail))
     {
         return(retailPurchaseInvoiceDetail);
     }
     VHasItem(retailPurchaseInvoiceDetail, _itemService);
     if (!isValid(retailPurchaseInvoiceDetail))
     {
         return(retailPurchaseInvoiceDetail);
     }
     VUniqueItem(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceDetailService, _itemService);
     return(retailPurchaseInvoiceDetail);
 }
        public RetailPurchaseInvoiceDetail VHasRetailPurchaseInvoice(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService)
        {
            RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);

            if (retailPurchaseInvoice == null)
            {
                retailPurchaseInvoiceDetail.Errors.Add("RetailPurchaseInvoiceId", "Tidak valid");
            }
            return(retailPurchaseInvoiceDetail);
        }
        public RetailPurchaseInvoiceDetail VHasItem(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IItemService _itemService)
        {
            Item item = _itemService.GetObjectById(retailPurchaseInvoiceDetail.ItemId);

            if (item == null)
            {
                retailPurchaseInvoiceDetail.Errors.Add("ItemId", "Tidak valid");
            }
            return(retailPurchaseInvoiceDetail);
        }
Пример #5
0
 public RetailPurchaseInvoiceDetail SoftDeleteObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService)
 {
     if (_validator.ValidDeleteObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService))
     {
         RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);
         _repository.SoftDeleteObject(retailPurchaseInvoiceDetail);
         retailPurchaseInvoice.Total = CalculateTotal(retailPurchaseInvoice.Id);
         _retailPurchaseInvoiceService.GetRepository().Update(retailPurchaseInvoice);
     }
     return(retailPurchaseInvoiceDetail);
 }
        public RetailPurchaseInvoiceDetail VIsValidQuantityOrdered(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService, IWarehouseItemService _warehouseItemService)
        {
            RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);
            WarehouseItem         warehouseItem         = _warehouseItemService.FindOrCreateObject(retailPurchaseInvoice.WarehouseId, retailPurchaseInvoiceDetail.ItemId);

            if (warehouseItem.Quantity - retailPurchaseInvoiceDetail.Quantity < 0)
            {
                retailPurchaseInvoiceDetail.Errors.Add("Generic", "Quantity harus lebih kecil atau sama dengan WarehouseItem Quantity");
                return(retailPurchaseInvoiceDetail);
            }
            return(retailPurchaseInvoiceDetail);
        }
        public RetailPurchaseInvoiceDetail VIsValidQuantity(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService, IWarehouseItemService _warehouseItemService)
        {
            RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);
            WarehouseItem         warehouseItem         = _warehouseItemService.FindOrCreateObject(retailPurchaseInvoice.WarehouseId, retailPurchaseInvoiceDetail.ItemId);

            if (retailPurchaseInvoiceDetail.Quantity <= 0 || retailPurchaseInvoiceDetail.Quantity >= warehouseItem.Quantity)
            {
                retailPurchaseInvoiceDetail.Errors.Add("Quantity", "Quantity harus lebih besar dari 0 dan lebih kecil dari WarehouseItem Quantity");
                return(retailPurchaseInvoiceDetail);
            }
            return(retailPurchaseInvoiceDetail);
        }
        public string PrintError(RetailPurchaseInvoiceDetail 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);
        }
        public RetailPurchaseInvoiceDetail VUniqueItem(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceDetailService _retailPurchaseInvoiceDetailService, IItemService _itemService)
        {
            IList <RetailPurchaseInvoiceDetail> details = _retailPurchaseInvoiceDetailService.GetObjectsByRetailPurchaseInvoiceId(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);

            foreach (var detail in details)
            {
                if (detail.ItemId == retailPurchaseInvoiceDetail.ItemId && detail.Id != retailPurchaseInvoiceDetail.Id)
                {
                    retailPurchaseInvoiceDetail.Errors.Add("Generic", "Tidak boleh ada duplikasi item dalam 1 RetailPurchaseInvoice");
                }
            }
            return(retailPurchaseInvoiceDetail);
        }
        public RetailPurchaseInvoiceDetail VIsParentNotConfirmed(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService)
        {
            RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);

            if (retailPurchaseInvoice != null)
            {
                if (retailPurchaseInvoice.IsConfirmed)
                {
                    retailPurchaseInvoiceDetail.Errors.Add("Generic", "RetailPurchaseInvoice tidak boleh terkonfirmasi");
                }
            }
            return(retailPurchaseInvoiceDetail);
        }
Пример #11
0
 public RetailPurchaseInvoiceDetail UpdateObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService,
                                                 IItemService _itemService, IWarehouseItemService _warehouseItemService, IPriceMutationService _priceMutationService)
 {
     if (_validator.ValidUpdateObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, this, _itemService, _warehouseItemService))
     {
         Item                  item                  = _itemService.GetObjectById(retailPurchaseInvoiceDetail.ItemId);
         PriceMutation         priceMutation         = _priceMutationService.GetObjectById(item.PriceMutationId);
         RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);
         retailPurchaseInvoiceDetail.PriceMutationId = item.PriceMutationId;
         retailPurchaseInvoiceDetail.Amount          = priceMutation.Amount * retailPurchaseInvoiceDetail.Quantity;
         retailPurchaseInvoiceDetail = _repository.UpdateObject(retailPurchaseInvoiceDetail);
         retailPurchaseInvoice.Total = CalculateTotal(retailPurchaseInvoice.Id);
         _retailPurchaseInvoiceService.GetRepository().Update(retailPurchaseInvoice);
     }
     return(retailPurchaseInvoiceDetail);
 }
Пример #12
0
        public RetailPurchaseInvoiceDetail UnconfirmObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IWarehouseItemService _warehouseItemService,
                                                           IWarehouseService _warehouseService, IItemService _itemService, IBarringService _barringService, IStockMutationService _stockMutationService)
        {
            if (_validator.ValidUnconfirmObject(retailPurchaseInvoiceDetail))
            {
                Item    item      = _itemService.GetObjectById(retailPurchaseInvoiceDetail.ItemId);
                decimal itemPrice = retailPurchaseInvoiceDetail.Amount / retailPurchaseInvoiceDetail.Quantity;
                item.AvgPrice = _itemService.CalculateAndUpdateAvgPrice(item, retailPurchaseInvoiceDetail.Quantity * (-1), itemPrice);

                IList <StockMutation> stockMutations = _stockMutationService.GetObjectsBySourceDocumentDetailForItem(retailPurchaseInvoiceDetail.ItemId, Core.Constants.Constant.SourceDocumentDetailType.RetailPurchaseInvoiceDetail, retailPurchaseInvoiceDetail.Id);
                foreach (var stockMutation in stockMutations)
                {
                    stockMutation.Errors = new Dictionary <string, string>();
                    _stockMutationService.ReverseStockMutateObject(stockMutation, _itemService, _barringService, _warehouseItemService);
                    _stockMutationService.SoftDeleteObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService);
                }
                retailPurchaseInvoiceDetail.CoGS = 0;
                retailPurchaseInvoiceDetail      = _repository.UnconfirmObject(retailPurchaseInvoiceDetail);
            }
            return(retailPurchaseInvoiceDetail);
        }
Пример #13
0
        public RetailPurchaseInvoiceDetail ConfirmObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService, IWarehouseItemService _warehouseItemService,
                                                         IWarehouseService _warehouseService, IItemService _itemService, IBarringService _barringService, IStockMutationService _stockMutationService)
        {
            if (_validator.ValidConfirmObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _warehouseItemService))
            {
                RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId);
                WarehouseItem         warehouseItem         = _warehouseItemService.FindOrCreateObject(retailPurchaseInvoice.WarehouseId, retailPurchaseInvoiceDetail.ItemId);
                Item          item          = _itemService.GetObjectById(retailPurchaseInvoiceDetail.ItemId);
                StockMutation stockMutation = new StockMutation()
                {
                    ItemId                   = retailPurchaseInvoiceDetail.ItemId,
                    ItemCase                 = Core.Constants.Constant.ItemCase.Ready,
                    Status                   = Core.Constants.Constant.MutationStatus.Addition,
                    Quantity                 = retailPurchaseInvoiceDetail.Quantity,
                    SourceDocumentCode       = retailPurchaseInvoice.Code,
                    SourceDocumentId         = retailPurchaseInvoice.Id,
                    SourceDocumentType       = Core.Constants.Constant.SourceDocumentType.RetailPurchaseInvoice,
                    SourceDocumentDetailCode = retailPurchaseInvoiceDetail.Code,
                    SourceDocumentDetailId   = retailPurchaseInvoiceDetail.Id,
                    SourceDocumentDetailType = Core.Constants.Constant.SourceDocumentDetailType.RetailPurchaseInvoiceDetail,
                    WarehouseId              = retailPurchaseInvoice.WarehouseId,
                    WarehouseItemId          = warehouseItem.Id
                };

                decimal itemPrice = retailPurchaseInvoiceDetail.Amount / retailPurchaseInvoiceDetail.Quantity;
                item.AvgPrice = _itemService.CalculateAndUpdateAvgPrice(item, retailPurchaseInvoiceDetail.Quantity, itemPrice);

                stockMutation           = _stockMutationService.CreateObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService);
                stockMutation.CreatedAt = (DateTime)retailPurchaseInvoice.ConfirmationDate.GetValueOrDefault();
                _stockMutationService.UpdateObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService);
                _stockMutationService.StockMutateObject(stockMutation, _itemService, _barringService, _warehouseItemService);
                retailPurchaseInvoiceDetail.CoGS = retailPurchaseInvoiceDetail.Quantity * item.AvgPrice;
                retailPurchaseInvoiceDetail      = _repository.ConfirmObject(retailPurchaseInvoiceDetail);
            }
            return(retailPurchaseInvoiceDetail);
        }
 public RetailPurchaseInvoiceDetail VConfirmObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService, IWarehouseItemService _warehouseItemService)
 {
     VIsValidQuantityOrdered(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _warehouseItemService);
     return(retailPurchaseInvoiceDetail);
 }
 public RetailPurchaseInvoiceDetail VUpdateObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService,
                                                  IRetailPurchaseInvoiceDetailService _retailPurchaseInvoiceDetailService, IItemService _itemService, IWarehouseItemService _warehouseItemService)
 {
     return(VCreateObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _retailPurchaseInvoiceDetailService, _itemService, _warehouseItemService));
 }
 public RetailPurchaseInvoiceDetail VDeleteObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService)
 {
     VIsParentNotConfirmed(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService);
     return(retailPurchaseInvoiceDetail);
 }
 public bool ValidCreateObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService,
                               IRetailPurchaseInvoiceDetailService _retailPurchaseInvoiceDetailService, IItemService _itemService, IWarehouseItemService _warehouseItemService)
 {
     VCreateObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _retailPurchaseInvoiceDetailService, _itemService, _warehouseItemService);
     return(isValid(retailPurchaseInvoiceDetail));
 }
 public bool ValidUnconfirmObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail)
 {
     retailPurchaseInvoiceDetail.Errors.Clear();
     VUnconfirmObject(retailPurchaseInvoiceDetail);
     return(isValid(retailPurchaseInvoiceDetail));
 }
 public RetailPurchaseInvoiceDetail VUnconfirmObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail)
 {
     return(retailPurchaseInvoiceDetail);
 }
        public bool isValid(RetailPurchaseInvoiceDetail obj)
        {
            bool isValid = !obj.Errors.Any();

            return(isValid);
        }
 public bool ValidDeleteObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService)
 {
     retailPurchaseInvoiceDetail.Errors.Clear();
     VDeleteObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService);
     return(isValid(retailPurchaseInvoiceDetail));
 }
Пример #22
0
        public void PopulateRetailPurchaseData()
        {
            TimeSpan salesDate = new TimeSpan(10, 0, 0, 0);
            TimeSpan dueDate   = new TimeSpan(3, 0, 0, 0);

            // Cash with GroupPricing
            rpi1 = new RetailPurchaseInvoice()
            {
                PurchaseDate = DateTime.Today.Subtract(salesDate),
                WarehouseId  = localWarehouse.Id,
                CashBankId   = cashBank.Id,
                ContactId    = contact.Id,
                DueDate      = DateTime.Today.Subtract(dueDate)
            };
            _retailPurchaseInvoiceService.CreateObject(rpi1, _warehouseService);

            // Cash with GroupPricing
            rpi2 = new RetailPurchaseInvoice()
            {
                PurchaseDate   = DateTime.Today.Subtract(salesDate),
                WarehouseId    = localWarehouse.Id,
                CashBankId     = cashBank.Id,
                ContactId      = contact.Id,
                DueDate        = DateTime.Today.Subtract(dueDate),
                IsGroupPricing = true,
                Discount       = 25,
                Tax            = 10,
            };
            _retailPurchaseInvoiceService.CreateObject(rpi2, _warehouseService);

            // Bank without GroupPricing
            rpi3 = new RetailPurchaseInvoice()
            {
                PurchaseDate = DateTime.Today.Subtract(salesDate),
                WarehouseId  = localWarehouse.Id,
                CashBankId   = cashBank2.Id,
                ContactId    = contact.Id,
                DueDate      = DateTime.Today.Subtract(dueDate),
                IsGBCH       = true,
                GBCH_DueDate = DateTime.Today.Subtract(dueDate),
                GBCH_No      = "G0001"
            };
            _retailPurchaseInvoiceService.CreateObject(rpi3, _warehouseService);

            rpid1 = new RetailPurchaseInvoiceDetail()
            {
                RetailPurchaseInvoiceId = rpi1.Id,
                Quantity = 100,
                ItemId   = blanket1.Id,
            };
            _retailPurchaseInvoiceDetailService.CreateObject(rpid1, _retailPurchaseInvoiceService, _itemService, _warehouseItemService, _priceMutationService);

            rpid2 = new RetailPurchaseInvoiceDetail()
            {
                RetailPurchaseInvoiceId = rpi2.Id,
                Quantity = 100,
                ItemId   = blanket1.Id,
            };
            _retailPurchaseInvoiceDetailService.CreateObject(rpid2, _retailPurchaseInvoiceService, _itemService, _warehouseItemService, _priceMutationService);

            rpid3 = new RetailPurchaseInvoiceDetail()
            {
                RetailPurchaseInvoiceId = rpi3.Id,
                Quantity = 100,
                ItemId   = blanket1.Id,
            };
            _retailPurchaseInvoiceDetailService.CreateObject(rpid3, _retailPurchaseInvoiceService, _itemService, _warehouseItemService, _priceMutationService);

            _retailPurchaseInvoiceService.ConfirmObject(rpi1, rpi1.PurchaseDate, contact.Id, _retailPurchaseInvoiceDetailService, _contactService, _priceMutationService, _payableService, _retailPurchaseInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService, _closingService);
            _retailPurchaseInvoiceService.ConfirmObject(rpi2, rpi2.PurchaseDate, contact2.Id, _retailPurchaseInvoiceDetailService, _contactService, _priceMutationService, _payableService, _retailPurchaseInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService, _closingService);
            _retailPurchaseInvoiceService.ConfirmObject(rpi3, rpi3.PurchaseDate, contact3.Id, _retailPurchaseInvoiceDetailService, _contactService, _priceMutationService, _payableService, _retailPurchaseInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService, _closingService);

            _retailPurchaseInvoiceService.PaidObject(rpi1, 200000, _cashBankService, _payableService, _paymentVoucherService, _paymentVoucherDetailService, _contactService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService);
            _retailPurchaseInvoiceService.PaidObject(rpi2, rpi2.Total, _cashBankService, _payableService, _paymentVoucherService, _paymentVoucherDetailService, _contactService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService);
            _retailPurchaseInvoiceService.PaidObject(rpi3, rpi3.Total, _cashBankService, _payableService, _paymentVoucherService, _paymentVoucherDetailService, _contactService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService);
        }