Beispiel #1
0
        public async Task Should_Success_Update_Data3()
        {
            GarmentDeliveryOrderFacade facade = new GarmentDeliveryOrderFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model = await dataUtil(facade, GetCurrentMethod()).GetTestData3();

            GarmentDeliveryOrderViewModel viewModel = new GarmentDeliveryOrderViewModel
            {
                Id            = model.Id,
                supplier      = new SupplierViewModel(),
                internNo      = "test",
                billNo        = "test",
                paymentBill   = "test",
                totalAmount   = 1,
                shipmentType  = "test",
                shipmentNo    = "test",
                paymentMethod = "test",
                paymentType   = "test",
                docurrency    = new CurrencyViewModel(),
                items         = new List <GarmentDeliveryOrderItemViewModel>
                {
                    new GarmentDeliveryOrderItemViewModel
                    {
                        purchaseOrderExternal = new PurchaseOrderExternal {
                            Id = 1, no = "test"
                        },
                        paymentDueDays = 1,
                        currency       = new CurrencyViewModel(),

                        fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel>
                        {
                            new GarmentDeliveryOrderFulfillmentViewModel
                            {
                                pOId                 = 1,
                                pOItemId             = 1,
                                conversion           = 0,
                                quantityCorrection   = 0,
                                pricePerDealUnit     = 0,
                                priceTotalCorrection = 0,
                                isSave               = true
                            }
                        }
                    },
                    new GarmentDeliveryOrderItemViewModel
                    {
                        Id = model.Items.ElementAt(0).Id,
                        purchaseOrderExternal = new PurchaseOrderExternal {
                            Id = 1, no = "test"
                        },
                        paymentDueDays = 1,
                        currency       = new CurrencyViewModel(),

                        fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel>
                        {
                            new GarmentDeliveryOrderFulfillmentViewModel
                            {
                                Id                   = model.Items.ElementAt(0).Details.ElementAt(0).Id,
                                pOId                 = 1,
                                pOItemId             = 1,
                                conversion           = 0,
                                quantityCorrection   = 0,
                                pricePerDealUnit     = 0,
                                priceTotalCorrection = 0,
                                isSave               = true
                            }
                        }
                    },
                }
            };

            List <GarmentDeliveryOrderItem>   item   = new List <GarmentDeliveryOrderItem>(model.Items);
            List <GarmentDeliveryOrderDetail> detail = new List <GarmentDeliveryOrderDetail>(item[0].Details);

            model.Items.Add(new GarmentDeliveryOrderItem
            {
                EPOId          = 1,
                EPONo          = "test",
                PaymentDueDays = 1,
                CurrencyCode   = "test",
                CurrencyId     = 1,
                Details        = new List <GarmentDeliveryOrderDetail>
                {
                    new GarmentDeliveryOrderDetail
                    {
                        POId                 = detail[0].POId,
                        POItemId             = detail[0].POItemId,
                        Conversion           = detail[0].Conversion,
                        QuantityCorrection   = detail[0].QuantityCorrection,
                        PricePerDealUnit     = detail[0].PricePerDealUnit,
                        PriceTotalCorrection = detail[0].PriceTotalCorrection,
                        DOQuantity           = detail[0].DOQuantity,
                        EPOItemId            = detail[0].EPOItemId,
                    }
                }
            });

            var Response = await facade.Update((int)model.Id, viewModel, model, USERNAME);

            Assert.NotEqual(Response, 0);
        }
Beispiel #2
0
        public void Should_Success_Validate_Data_Item()
        {
            GarmentDeliveryOrderViewModel nullViewModel = new GarmentDeliveryOrderViewModel
            {
                supplier = new SupplierViewModel
                {
                    Id     = 1,
                    Code   = "test",
                    Import = true,
                    Name   = "test"
                }
            };

            Assert.True(nullViewModel.Validate(null).Count() > 0);

            GarmentDeliveryOrderViewModel viewModel = new GarmentDeliveryOrderViewModel
            {
                supplier = new SupplierViewModel
                {
                    Id     = 1,
                    Code   = "test",
                    Import = true,
                    Name   = "test"
                },
                internNo      = "test",
                billNo        = "test",
                paymentBill   = "test",
                totalAmount   = 1,
                shipmentType  = "test",
                shipmentNo    = "test",
                paymentMethod = "test",
                paymentType   = "test",
                docurrency    = new CurrencyViewModel(),
                items         = new List <GarmentDeliveryOrderItemViewModel>
                {
                    new GarmentDeliveryOrderItemViewModel
                    {
                        purchaseOrderExternal = null,
                        paymentDueDays        = 1,
                        currency = new CurrencyViewModel(),

                        fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel>
                        {
                            new GarmentDeliveryOrderFulfillmentViewModel
                            {
                                pOId             = 1,
                                pOItemId         = 1,
                                conversion       = 2,
                                purchaseOrderUom = new UomViewModel()
                                {
                                    Id   = "1",
                                    Unit = "test"
                                },
                                smallUom = new UomViewModel()
                                {
                                    Id   = "1",
                                    Unit = "test"
                                }
                            }
                        }
                    }
                }
            };

            Assert.True(viewModel.Validate(null).Count() > 0);
        }
Beispiel #3
0
        public void Should_Success_Validate_Data_Fulfillment_With_Conversion_0()
        {
            GarmentDeliveryOrderViewModel nullViewModel = new GarmentDeliveryOrderViewModel
            {
                supplier = new SupplierViewModel
                {
                    Id     = 1,
                    Code   = "test",
                    Import = true,
                    Name   = "test"
                }
            };

            Assert.True(nullViewModel.Validate(null).Count() > 0);

            GarmentDeliveryOrderViewModel viewModel = new GarmentDeliveryOrderViewModel
            {
                supplier = new SupplierViewModel
                {
                    Id     = 1,
                    Code   = "test",
                    Import = true,
                    Name   = "test"
                },
                internNo      = "test",
                billNo        = "test",
                paymentBill   = "test",
                totalAmount   = 1,
                shipmentType  = "test",
                shipmentNo    = "test",
                paymentMethod = "test",
                paymentType   = "test",
                docurrency    = new CurrencyViewModel(),
                items         = new List <GarmentDeliveryOrderItemViewModel>
                {
                    new GarmentDeliveryOrderItemViewModel
                    {
                        purchaseOrderExternal = new PurchaseOrderExternal {
                            Id = 1, no = "test"
                        },
                        paymentDueDays = 1,
                        currency       = new CurrencyViewModel(),

                        fulfillments = new List <GarmentDeliveryOrderFulfillmentViewModel>
                        {
                            new GarmentDeliveryOrderFulfillmentViewModel
                            {
                                pOId                 = 1,
                                pOItemId             = 1,
                                conversion           = 0,
                                quantityCorrection   = 0,
                                pricePerDealUnit     = 0,
                                priceTotalCorrection = 0,
                            }
                        }
                    }
                }
            };

            Assert.True(viewModel.Validate(null).Count() > 0);
        }
        public async Task <int> Update(int id, GarmentDeliveryOrderViewModel vm, GarmentDeliveryOrder m, string user, int clientTimeZoneOffset = 7)
        {
            int Updated = 0;

            using (var transaction = dbContext.Database.BeginTransaction())
            {
                try
                {
                    var oldM = this.dbSet.AsNoTracking()
                               .Include(d => d.Items)
                               .ThenInclude(d => d.Details)
                               .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted);

                    if (oldM != null && oldM.Id == id)
                    {
                        EntityExtension.FlagForUpdate(m, user, USER_AGENT);

                        foreach (var vmItem in vm.items)
                        {
                            foreach (var modelItem in m.Items.Where(i => i.Id == vmItem.Id))
                            {
                                foreach (var item in oldM.Items.Where(i => i.EPOId == modelItem.EPOId).ToList())
                                {
                                    EntityExtension.FlagForUpdate(modelItem, user, USER_AGENT);

                                    CurrencyViewModel garmentCurrencyViewModel = GetCurrency(item.CurrencyCode, m.DODate);
                                    m.DOCurrencyId   = garmentCurrencyViewModel.Id;
                                    m.DOCurrencyCode = garmentCurrencyViewModel.Code;
                                    m.DOCurrencyRate = garmentCurrencyViewModel.Rate;

                                    foreach (var vmDetail in vmItem.fulfillments)
                                    {
                                        foreach (var modelDetail in modelItem.Details.Where(j => j.Id == vmDetail.Id))
                                        {
                                            foreach (var detail in item.Details.Where(j => j.EPOItemId == modelDetail.EPOItemId).ToList())
                                            {
                                                GarmentInternalPurchaseOrder     internalPurchaseOrder     = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(modelDetail.POId));
                                                GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(modelDetail.POId));
                                                GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(modelDetail.EPOItemId));

                                                if (vmDetail.isSave == false)
                                                {
                                                    externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity;
                                                }
                                                else
                                                {
                                                    externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity + modelDetail.DOQuantity;
                                                    modelDetail.POItemId = (int)internalPurchaseOrderItem.Id;
                                                    modelDetail.PRItemId = internalPurchaseOrderItem.GPRItemId;
                                                    modelDetail.UnitId   = internalPurchaseOrder.UnitId;
                                                    modelDetail.UnitCode = internalPurchaseOrder.UnitCode;

                                                    modelDetail.QuantityCorrection         = modelDetail.DOQuantity;
                                                    modelDetail.PricePerDealUnitCorrection = modelDetail.PricePerDealUnit;
                                                    modelDetail.PriceTotalCorrection       = modelDetail.PriceTotal;
                                                }

                                                if (externalPurchaseOrderItem.ReceiptQuantity == 0)
                                                {
                                                    if (externalPurchaseOrderItem.DOQuantity == 0)
                                                    {
                                                        GarmentPurchaseRequestItem purchaseRequestItem = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(s => s.Id.Equals(modelDetail.PRItemId));
                                                        purchaseRequestItem.Status       = "Sudah diorder ke Supplier";
                                                        internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier";
                                                    }
                                                    else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity)
                                                    {
                                                        internalPurchaseOrderItem.Status = "Barang sudah datang parsial";
                                                    }
                                                    else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity)
                                                    {
                                                        internalPurchaseOrderItem.Status = "Barang Sudah Datang Semua";
                                                    }
                                                }

                                                EntityExtension.FlagForUpdate(modelDetail, user, USER_AGENT);
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        dbSet.Update(m);

                        Updated = await dbContext.SaveChangesAsync();

                        transaction.Commit();
                    }
                    else
                    {
                        throw new Exception("Invalid Id");
                    }
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }