Пример #1
0
 public StockTransferNote_Item GetNewData(InventorySummaryViewModel inventorySummary)
 {
     return(new StockTransferNote_Item
     {
         ProductId = inventorySummary.productId,
         ProductCode = inventorySummary.productCode,
         ProductName = inventorySummary.productName,
         StockQuantity = inventorySummary.quantity,
         UomUnit = inventorySummary.uom,
         UomId = inventorySummary.uomId,
         TransferedQuantity = 1
     });
 }
Пример #2
0
        public static InventorySummaryViewModel GetInventorySummary(HttpClientTestService client)
        {
            var response = client.GetAsync($"{APIEndpoint.Inventory}/inventory/inventory-summary?page=1&size=1").Result;

            response.EnsureSuccessStatusCode();

            var data = response.Content.ReadAsStringAsync();
            Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(data.Result.ToString());

            List <InventorySummaryViewModel> list             = JsonConvert.DeserializeObject <List <InventorySummaryViewModel> >(result["data"].ToString());
            InventorySummaryViewModel        inventorySummary = list.First();

            return(inventorySummary);
        }
        public StockTransferNoteViewModel MapToViewModel(StockTransferNote model)
        {
            StockTransferNoteViewModel viewModel = new StockTransferNoteViewModel();

            PropertyCopier <StockTransferNote, StockTransferNoteViewModel> .Copy(model, viewModel);

            StorageViewModel SourceStorage = new StorageViewModel()
            {
                _id  = model.SourceStorageId,
                code = model.SourceStorageCode,
                name = model.SourceStorageName
            };

            StorageViewModel TargetStorage = new StorageViewModel()
            {
                _id  = model.TargetStorageId,
                code = model.TargetStorageCode,
                name = model.TargetStorageName
            };

            viewModel.SourceStorage = SourceStorage;
            viewModel.TargetStorage = TargetStorage;

            viewModel.StockTransferNoteItems = new List <StockTransferNote_ItemViewModel>();
            if (model.StockTransferNoteItems != null)
            {
                foreach (StockTransferNote_Item stn in model.StockTransferNoteItems)
                {
                    StockTransferNote_ItemViewModel stockTransferNoteItemViewModel = new StockTransferNote_ItemViewModel();
                    PropertyCopier <StockTransferNote_Item, StockTransferNote_ItemViewModel> .Copy(stn, stockTransferNoteItemViewModel);

                    InventorySummaryViewModel Summary = new InventorySummaryViewModel()
                    {
                        productId   = stn.ProductId,
                        productCode = stn.ProductCode,
                        productName = stn.ProductName,
                        quantity    = stn.StockQuantity,
                        uomId       = stn.UomId,
                        uom         = stn.UomUnit
                    };

                    stockTransferNoteItemViewModel.Summary = Summary;

                    viewModel.StockTransferNoteItems.Add(stockTransferNoteItemViewModel);
                }
            }

            return(viewModel);
        }
Пример #4
0
        public InventorySummaryViewModel MapToViewModel(InventorySummary model)
        {
            var viewModel = new InventorySummaryViewModel()
            {
                code          = model.No,
                productId     = model.ProductId,
                productCode   = model.ProductCode,
                productName   = model.ProductName,
                uomId         = model.UomId,
                uom           = model.UomUnit,
                storageId     = model.StorageId,
                storageCode   = model.StorageCode,
                storageName   = model.StorageName,
                stockPlanning = model.StockPlanning.ToString(),
                quantity      = model.Quantity
            };

            PropertyCopier <InventorySummary, InventorySummaryViewModel> .Copy(model, viewModel);

            return(viewModel);
        }
Пример #5
0
        public InventorySummary MapToModel(InventorySummaryViewModel viewModel)
        {
            var model = new InventorySummary()
            {
                No            = viewModel.code,
                ProductId     = viewModel.productId,
                ProductCode   = viewModel.productCode,
                ProductName   = viewModel.productName,
                UomId         = viewModel.uomId,
                UomUnit       = viewModel.uom,
                StorageId     = viewModel.storageId,
                StorageCode   = viewModel.storageCode,
                StorageName   = viewModel.storageName,
                StockPlanning = double.Parse(viewModel.stockPlanning),
                Quantity      = viewModel.quantity
            };

            PropertyCopier <InventorySummaryViewModel, InventorySummary> .Copy(viewModel, model);

            return(model);
        }
        public MaterialsRequestNote_Item GetNewDataCustom()
        {
            ProductionOrderViewModel  productionOrder = ProductionOrderDataUtil.GetProductionOrder(client);
            InventorySummaryViewModel product         = InventorySummaryDataUtil.GetInventorySummary(client);

            return(new MaterialsRequestNote_Item
            {
                ProductionOrderId = "testCustom",
                ProductionOrderNo = "testCustomNo",
                ProductionOrderIsCompleted = false,
                OrderQuantity = (double)productionOrder.orderQuantity,
                OrderTypeId = productionOrder.orderType._id,
                OrderTypeCode = productionOrder.orderType.code,
                OrderTypeName = productionOrder.orderType.name,
                ProductId = product.productId,
                ProductCode = product.productCode,
                ProductName = product.productName,
                Grade = "A",
                Length = 5
            });
        }
Пример #7
0
        public override StockTransferNote GetNewData()
        {
            StorageViewModel          storage          = StorageDataUtil.GetPrintingGreigeStorage(client);
            InventorySummaryViewModel inventorySummary = InventorySummaryDataUtil.GetInventorySummary(client);

            StockTransferNote TestData = new StockTransferNote
            {
                ReferenceNo            = "Reference No Test",
                ReferenceType          = "Reference Type Test",
                SourceStorageId        = inventorySummary.storageId,
                SourceStorageCode      = inventorySummary.storageCode,
                SourceStorageName      = inventorySummary.storageName,
                TargetStorageId        = storage._id,
                TargetStorageCode      = storage.code,
                TargetStorageName      = storage.name,
                IsApproved             = false,
                StockTransferNoteItems = new List <StockTransferNote_Item> {
                    stockTransferNoteItemDataUtil.GetNewData(inventorySummary)
                }
            };

            return(TestData);
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            int Count = 0;

            if (this.Unit == null || string.IsNullOrWhiteSpace(this.Unit._id))
            {
                yield return(new ValidationResult("Unit is required", new List <string> {
                    "Unit"
                }));
            }

            if (string.IsNullOrWhiteSpace(this.Type))
            {
                yield return(new ValidationResult("Type is required", new List <string> {
                    "Type"
                }));
            }

            if (MaterialDistributionNoteItems.Count.Equals(0))
            {
                yield return(new ValidationResult("Material Distribution Note Item is required", new List <string> {
                    "MaterialDistributionNoteItemCollection"
                }));
            }
            else
            {
                string materialDistributionNoteItemError = "[";

                foreach (MaterialDistributionNoteItemViewModel mdni in this.MaterialDistributionNoteItems)
                {
                    if (string.IsNullOrWhiteSpace(mdni.MaterialRequestNoteCode))
                    {
                        Count++;
                        materialDistributionNoteItemError += "{ MaterialRequestNote: 'SPB is required' }, ";
                    }
                }

                if (Count.Equals(0))
                {
                    /* Get Inventory Summaries */
                    string inventorySummaryURI = "inventory/inventory-summary?order=%7B%7D&page=1&size=1000000000&";

                    MaterialDistributionNoteService Service = (MaterialDistributionNoteService)validationContext.GetService(typeof(MaterialDistributionNoteService));
                    HttpClient httpClient = new HttpClient();
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Service.Token);

                    List <string> products = new List <string>();
                    foreach (MaterialDistributionNoteItemViewModel mdni in this.MaterialDistributionNoteItems)
                    {
                        products.AddRange(mdni.MaterialDistributionNoteDetails.Select(p => p.Product.code).ToList());
                    }

                    var storageName = this.Unit.name.Equals("PRINTING") ? "Gudang Greige Printing" : "Gudang Greige Finishing";

                    Dictionary <string, object> filter = new Dictionary <string, object> {
                        { "storageName", storageName }, { "uom", "MTR" }, { "productCode", new Dictionary <string, object> {
                                                                                { "$in", products.ToArray() }
                                                                            } }
                    };
                    var response = httpClient.GetAsync($@"{APIEndpoint.Inventory}{inventorySummaryURI}filter=" + JsonConvert.SerializeObject(filter)).Result.Content.ReadAsStringAsync();
                    Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(response.Result);

                    var json = result.Single(p => p.Key.Equals("data")).Value;
                    List <InventorySummaryViewModel> inventorySummaries = JsonConvert.DeserializeObject <List <InventorySummaryViewModel> >(json.ToString());

                    foreach (MaterialDistributionNoteItemViewModel mdni in this.MaterialDistributionNoteItems)
                    {
                        int CountDetail = 0;

                        string materialDistributionNoteDetailError = "[";

                        foreach (MaterialDistributionNoteDetailViewModel mdnd in mdni.MaterialDistributionNoteDetails)
                        {
                            InventorySummaryViewModel inventorySummary = inventorySummaries.SingleOrDefault(p => p.productCode.Equals(mdnd.Product.code) && p.uom.Equals("MTR"));

                            materialDistributionNoteDetailError += "{";

                            if (inventorySummary == null)
                            {
                                CountDetail++;
                                materialDistributionNoteDetailError += "Product: 'Product is not exists in the storage', ";
                            }
                            else
                            {
                                if (mdnd.Quantity == null)
                                {
                                    CountDetail++;
                                    materialDistributionNoteDetailError += "Quantity: 'Quantity is required', ";
                                }
                                else if (mdnd.Quantity <= 0)
                                {
                                    CountDetail++;
                                    materialDistributionNoteDetailError += "Quantity: 'Quantity must be greater than zero', ";
                                }

                                if (mdnd.ReceivedLength == null)
                                {
                                    CountDetail++;
                                    materialDistributionNoteDetailError += "ReceivedLength: 'Length is required', ";
                                }
                                else if (mdnd.ReceivedLength <= 0)
                                {
                                    CountDetail++;
                                    materialDistributionNoteDetailError += "ReceivedLength: 'Length must be greater than zero', ";
                                }
                                else if (mdnd.ReceivedLength > inventorySummary.quantity)
                                {
                                    CountDetail++;
                                    materialDistributionNoteDetailError += "ReceivedLength: 'Length must be less than or equal than stock', ";
                                }
                                else
                                {
                                    inventorySummary.quantity -= (double)mdnd.ReceivedLength;
                                }

                                if (mdnd.Supplier == null || string.IsNullOrWhiteSpace(mdnd.Supplier._id))
                                {
                                    CountDetail++;
                                    materialDistributionNoteDetailError += "Supplier: 'Supplier is required', ";
                                }
                            }

                            materialDistributionNoteDetailError += "}, ";
                        }

                        materialDistributionNoteDetailError += "]";

                        if (CountDetail > 0)
                        {
                            Count++;
                            materialDistributionNoteItemError += string.Concat("{ MaterialDistributionNoteDetails: ", materialDistributionNoteDetailError, " }, ");
                        }
                        else
                        {
                            materialDistributionNoteItemError += "{}, ";
                        }
                    }
                }

                materialDistributionNoteItemError += "]";

                if (Count > 0)
                {
                    yield return(new ValidationResult(materialDistributionNoteItemError, new List <string> {
                        "MaterialDistributionNoteItems"
                    }));
                }
            }
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            if (this.Unit == null || string.IsNullOrWhiteSpace(this.Unit._id))
            {
                yield return(new ValidationResult("Unit harus diisi", new List <string> {
                    "UnitId"
                }));
            }
            if (string.IsNullOrWhiteSpace(this.RequestType))
            {
                yield return(new ValidationResult("Jenis Request harus diisi", new List <string> {
                    "RequestType"
                }));
            }

            int    Count = 0;
            string materialsRequestNote_ItemsError = "[";

            if (this.MaterialsRequestNote_Items == null || this.MaterialsRequestNote_Items.Count.Equals(0))
            {
                yield return(new ValidationResult("Tabel dibawah harus diisi", new List <string> {
                    "MaterialsRequestNote_Items"
                }));
            }
            else
            {
                foreach (MaterialsRequestNote_ItemViewModel materialsRequestNote_Item in this.MaterialsRequestNote_Items)
                {
                    materialsRequestNote_ItemsError += "{";
                    if (materialsRequestNote_Item.Product == null || string.IsNullOrWhiteSpace(materialsRequestNote_Item.Product._id))
                    {
                        Count++;
                        materialsRequestNote_ItemsError += "ProductId: 'Barang harus diisi', ";
                    }
                    else if (materialsRequestNote_Item.Product.name != null || string.IsNullOrWhiteSpace(materialsRequestNote_Item.Product.name))
                    {
                        string inventorySummaryURI = "inventory/inventory-summary?order=%7B%7D&page=1&size=1000000000&";

                        MaterialsRequestNoteService Service = (MaterialsRequestNoteService)validationContext.GetService(typeof(MaterialsRequestNoteService));
                        HttpClient httpClient = new HttpClient();
                        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Service.Token);

                        List <string> products = new List <string>();
                        foreach (MaterialsRequestNote_ItemViewModel item in this.MaterialsRequestNote_Items)
                        {
                            products.Add(item.Product.code);
                        }

                        var storageName = this.Unit.name.Equals("PRINTING") ? "Gudang Greige Printing" : "Gudang Greige Finishing";

                        Dictionary <string, object> filter = new Dictionary <string, object> {
                            { "storageName", storageName }, { "uom", "MTR" }, { "productCode", new Dictionary <string, object> {
                                                                                    { "$in", products.ToArray() }
                                                                                } }
                        };
                        var response = httpClient.GetAsync($@"{APIEndpoint.Inventory}{inventorySummaryURI}filter=" + JsonConvert.SerializeObject(filter)).Result.Content.ReadAsStringAsync();
                        Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(response.Result);

                        var json = result.Single(p => p.Key.Equals("data")).Value;
                        List <InventorySummaryViewModel> inventorySummaries = JsonConvert.DeserializeObject <List <InventorySummaryViewModel> >(json.ToString());

                        if (!(inventorySummaries.Count.Equals(0)))
                        {
                            InventorySummaryViewModel inventorySummary = inventorySummaries.SingleOrDefault(p => p.productCode.Equals(materialsRequestNote_Item.Product.code) && p.uom.Equals("MTR"));
                            if (inventorySummary == null)
                            {
                                Count++;
                                materialsRequestNote_ItemsError += "ProductId: 'Barang tidak ada pada inventori summeries', ";
                            }
                        }
                        else
                        {
                            Count++;
                            materialsRequestNote_ItemsError += "ProductId: 'Barang tidak ada pada inventori summeries', ";
                        }
                    }
                    if (string.IsNullOrWhiteSpace(materialsRequestNote_Item.Grade))
                    {
                        Count++;
                        materialsRequestNote_ItemsError += "Grade: 'Grade harus diisi', ";
                    }
                    if (materialsRequestNote_Item.Length == null)
                    {
                        Count++;
                        materialsRequestNote_ItemsError += "Length: 'Panjang harus diisi', ";
                    }
                    else if (materialsRequestNote_Item.Length <= 0)
                    {
                        Count++;
                        materialsRequestNote_ItemsError += "Length: 'Panjang harus lebih besar dari 0', ";
                    }

                    if (!string.Equals(this.RequestType.ToUpper(), "TEST") && !string.Equals(this.RequestType.ToUpper(), "PEMBELIAN"))
                    {
                        if (materialsRequestNote_Item.ProductionOrder != null && materialsRequestNote_Item.Length > (materialsRequestNote_Item.ProductionOrder.orderQuantity * 1.05))
                        {
                            Count++;
                            materialsRequestNote_ItemsError += "Length: 'Panjang total tidak boleh lebih dari 105% toleransi', ";
                        }
                        if (materialsRequestNote_Item.ProductionOrder == null || string.IsNullOrWhiteSpace(materialsRequestNote_Item.ProductionOrder._id))
                        {
                            Count++;
                            materialsRequestNote_ItemsError += "ProductionOrderId: 'Surat Perintah Produksi harus diisi', ";
                        }
                        if (materialsRequestNote_Item.ProductionOrder != null)
                        {
                            int count = MaterialsRequestNote_Items
                                        .Count(c => string.Equals(c.ProductionOrder._id, materialsRequestNote_Item.ProductionOrder._id));

                            if (count > 1)
                            {
                                Count++;
                                materialsRequestNote_ItemsError += "ProductionOrderId: 'Surat Perintah Produksi tidak boleh duplikat', ";
                            }
                        }
                    }
                    materialsRequestNote_ItemsError += "}, ";
                }
            }
            materialsRequestNote_ItemsError += "]";
            if (Count > 0)
            {
                yield return(new ValidationResult(materialsRequestNote_ItemsError, new List <string> {
                    "MaterialsRequestNote_Items"
                }));
            }
        }