public IActionResult GetPackingListPDF(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); SPKDocs model = facade.ReadById(id); SPKDocsViewModel viewModel = mapper.Map <SPKDocsViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } if (indexAcceptPdf < 0) { return(Ok(new { apiVersion = ApiVersion, statusCode = General.OK_STATUS_CODE, message = General.OK_MESSAGE, data = viewModel, })); } else { int clientTimeZoneOffset = int.Parse(Request.Headers["x-timezone-offset"].First()); //foreach (var item in viewModel.items) //{ // var garmentInvoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); // var garmentInvoiceViewModel = mapper.Map<GarmentInvoiceViewModel>(garmentInvoice); // item.garmentInvoice = garmentInvoiceViewModel; // foreach (var detail in item.details) // { // var deliveryOrder = deliveryOrderFacade.ReadById((int)detail.deliveryOrder.Id); // var deliveryOrderViewModel = mapper.Map<GarmentDeliveryOrderViewModel>(deliveryOrder); // detail.deliveryOrder = deliveryOrderViewModel; // } //} PackingListPdfTemplate PdfTemplateLocal = new PackingListPdfTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, serviceProvider, clientTimeZoneOffset); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.packingList}.pdf" }); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public async Task UploadData(SPKDocs data, string username) { foreach (var i in data.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); } EntityExtension.FlagForCreate(data, username, USER_AGENT); dbSet.Add(data); var result = await dbContext.SaveChangesAsync(); //await BulkInsert(data, username); }
public IActionResult Get(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); SPKDocs model = facade.ReadById(id); SPKDocsViewModel viewModel = mapper.Map <SPKDocsViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } //if (indexAcceptPdf < 0) //{ return(Ok(new { apiVersion = ApiVersion, statusCode = General.OK_STATUS_CODE, message = General.OK_MESSAGE, data = viewModel, })); // } //else //{ // int clientTimeZoneOffset = int.Parse(Request.Headers["x-timezone-offset"].First()); // PurchaseRequestPDFTemplate PdfTemplate = new PurchaseRequestPDFTemplate(); // MemoryStream stream = PdfTemplate.GeneratePdfTemplate(viewModel, clientTimeZoneOffset); // return new FileStreamResult(stream, "application/pdf") // { // FileDownloadName = $"{viewModel.Code}.pdf" // }; //} } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public async Task <int> Create(SPKDocs model, string username, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(model, username, USER_AGENT); string packingList = GenerateCode("EFR-KB/PLB"); string code = GenerateCode("EFR-PK/PBJ"); string password = String.Join("", GenerateCode(DateTime.Now.ToString("dd")).Split("/")); //(generateCode(("0" + date.getDate()).slice(-2))).split('/').join('') foreach (var i in model.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); var inven = GetItems(i.ItemCode, i.ItemName, i.ItemArticleRealizationOrder); if (inven == null) { ItemCoreViewModel item = new ItemCoreViewModel { dataDestination = new List <ItemViewModelRead> { new ItemViewModelRead { ArticleRealizationOrder = i.ItemArticleRealizationOrder, code = i.ItemCode, name = i.ItemName, Remark = i.Remark, Size = i.ItemSize, Uom = i.ItemUom, } }, DomesticCOGS = i.ItemDomesticCOGS, DomesticRetail = i.ItemDomesticRetail, DomesticSale = i.ItemDomesticSale, DomesticWholesale = i.ItemDomesticWholesale }; string itemsUri = "items/finished-goods"; var httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = await httpClient.PostAsync($"{APIEndpoint.Core}{itemsUri}", new StringContent(JsonConvert.SerializeObject(item).ToString(), Encoding.UTF8, General.JsonMediaType)); response.EnsureSuccessStatusCode(); } } model.Code = code; model.Date = new DateTimeOffset(model.CreatedUtc); model.PackingList = packingList; model.Password = password; model.IsReceived = false; model.IsDraft = false; model.IsDistributed = false; dbSet.Add(model); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <int> Create(TransferOutDocViewModel model, TransferOutDoc model2, string username, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { string codeOut = GenerateCode("EFR-KB/RTP"); model2.Code = codeOut; model2.Date = DateTimeOffset.Now; List <ExpeditionItem> expeditionItems = new List <ExpeditionItem>(); List <ExpeditionDetail> expeditionDetails = new List <ExpeditionDetail>(); List <SPKDocsItem> sPKDocsItem = new List <SPKDocsItem>(); EntityExtension.FlagForCreate(model2, username, USER_AGENT); foreach (var i in model2.Items) { sPKDocsItem.Add(new SPKDocsItem { ItemArticleRealizationOrder = i.ArticleRealizationOrder, ItemCode = i.ItemCode, ItemDomesticCOGS = i.DomesticCOGS, ItemDomesticRetail = i.DomesticRetail, ItemDomesticSale = i.DomesticSale, ItemDomesticWholesale = i.DomesticWholeSale, ItemId = i.ItemId, ItemName = i.ItemName, ItemSize = i.Size, ItemUom = i.Uom, Quantity = i.Quantity, Remark = i.Remark, SendQuantity = i.Quantity }); EntityExtension.FlagForCreate(i, username, USER_AGENT); } dbSet.Add(model2); //Created = await dbContext.SaveChangesAsync(); SPKDocs sPKDocs = new SPKDocs { Code = GenerateCode("EFR-PK/PBJ"), Date = DateTimeOffset.Now, IsDistributed = true, IsDraft = false, IsReceived = false, DestinationCode = model2.DestinationCode, DestinationId = model2.DestinationId, DestinationName = model2.DestinationName, PackingList = GenerateCode("EFR-KB/PLR"), Password = String.Join("", GenerateCode(DateTime.Now.ToString("dd")).Split("/")), Reference = codeOut, SourceCode = model2.SourceCode, SourceName = model2.SourceName, SourceId = model2.SourceId, Weight = 0, Items = sPKDocsItem }; EntityExtension.FlagForCreate(sPKDocs, username, USER_AGENT); foreach (var i in sPKDocs.Items) { var inventorymovement = new InventoryMovement(); var inven = dbContext.Inventories.Where(x => x.ItemId == i.ItemId && x.StorageId == model2.SourceId).FirstOrDefault(); if (inven != null) { inventorymovement.Before = inven.Quantity; inven.Quantity = inven.Quantity - i.Quantity; } inventorymovement.After = inventorymovement.Before + i.Quantity; inventorymovement.Date = DateTimeOffset.UtcNow; inventorymovement.ItemCode = i.ItemCode; inventorymovement.ItemDomesticCOGS = i.ItemDomesticCOGS; inventorymovement.ItemDomesticRetail = i.ItemDomesticRetail; inventorymovement.ItemDomesticWholeSale = i.ItemDomesticRetail; inventorymovement.ItemDomesticSale = i.ItemDomesticSale; inventorymovement.ItemId = i.ItemId; inventorymovement.ItemInternationalCOGS = 0; inventorymovement.ItemInternationalRetail = 0; inventorymovement.ItemInternationalSale = 0; inventorymovement.ItemInternationalWholeSale = 0; inventorymovement.ItemName = i.ItemName; inventorymovement.ItemSize = i.ItemSize; inventorymovement.ItemUom = i.ItemUom; inventorymovement.Quantity = i.Quantity; inventorymovement.StorageCode = model2.SourceCode; inventorymovement.StorageId = model2.SourceId; inventorymovement.StorageName = model2.SourceName; inventorymovement.Type = "OUT"; inventorymovement.Reference = codeOut; inventorymovement.Remark = model2.Remark; inventorymovement.StorageIsCentral = model2.SourceName.Contains("GUDANG") ? true : false; EntityExtension.FlagForCreate(inventorymovement, username, USER_AGENT); dbSetInventoryMovement.Add(inventorymovement); EntityExtension.FlagForCreate(i, username, USER_AGENT); } dbSetSPKDocs.Add(sPKDocs); Created = await dbContext.SaveChangesAsync(); foreach (var i in sPKDocs.Items) { expeditionDetails.Add(new ExpeditionDetail { ArticleRealizationOrder = i.ItemArticleRealizationOrder, DomesticCOGS = i.ItemDomesticCOGS, DomesticRetail = i.ItemDomesticRetail, DomesticSale = i.ItemDomesticSale, DomesticWholesale = i.ItemDomesticWholesale, ItemCode = i.ItemCode, ItemId = i.ItemId, ItemName = i.ItemName, Quantity = i.Quantity, Remark = i.Remark, SendQuantity = i.SendQuantity, Uom = i.ItemUom, Size = i.ItemSize, //SPKDocsId = (int)dbContext.SPKDocs.OrderByDescending(x => x.Id).FirstOrDefault().Id + 1 SPKDocsId = (int)sPKDocs.Id }); } expeditionItems.Add(new ExpeditionItem { Code = sPKDocs.Code, Date = sPKDocs.Date, DestinationCode = sPKDocs.DestinationCode, DestinationId = (int)sPKDocs.DestinationId, DestinationName = sPKDocs.DestinationName, IsDistributed = sPKDocs.IsDistributed, IsDraft = sPKDocs.IsDraft, IsReceived = sPKDocs.IsReceived, PackingList = sPKDocs.PackingList, Password = sPKDocs.Password, Reference = sPKDocs.Reference, SourceCode = sPKDocs.SourceCode, SourceId = (int)sPKDocs.SourceId, SourceName = sPKDocs.SourceName, //SPKDocsId = (int)dbContext.SPKDocs.OrderByDescending(x => x.Id).FirstOrDefault().Id + 1, SPKDocsId = (int)sPKDocs.Id, Weight = sPKDocs.Weight, Details = expeditionDetails }); Expedition expedition = new Expedition { Code = GenerateCode("EFR-KB/EXP"), Date = DateTimeOffset.Now, ExpeditionServiceCode = model.expeditionService.code, ExpeditionServiceId = (int)model.expeditionService._id, ExpeditionServiceName = model.expeditionService.name, Remark = "", Weight = 0, Items = expeditionItems, }; EntityExtension.FlagForCreate(expedition, username, USER_AGENT); foreach (var i in expeditionItems) { EntityExtension.FlagForCreate(i, username, USER_AGENT); foreach (var d in expeditionDetails) { EntityExtension.FlagForCreate(d, username, USER_AGENT); } } dbSetExpedition.Add(expedition); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <IActionResult> PostCSVFileAsync(double source, string sourcec, string sourcen, double destination, string destinationc, string destinationn, DateTimeOffset date) // public async Task<IActionResult> PostCSVFileAsync(double source, double destination, DateTime date) { try { identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; identityService.Token = Request.Headers["Authorization"].FirstOrDefault().Replace("Bearer ", ""); identityService.TimezoneOffset = Convert.ToInt32(Request.Headers["x-timezone-offset"]); if (Request.Form.Files.Count > 0) { //VerifyUser(); var UploadedFile = Request.Form.Files[0]; StreamReader Reader = new StreamReader(UploadedFile.OpenReadStream()); List <string> FileHeader = new List <string>(Reader.ReadLine().Split(",")); var ValidHeader = facade.CsvHeader.SequenceEqual(FileHeader, StringComparer.OrdinalIgnoreCase); if (ValidHeader) { Reader.DiscardBufferedData(); Reader.BaseStream.Seek(0, SeekOrigin.Begin); Reader.BaseStream.Position = 0; CsvReader Csv = new CsvReader(Reader); Csv.Configuration.IgnoreQuotes = false; Csv.Configuration.Delimiter = ","; Csv.Configuration.RegisterClassMap <PkbjMap>(); Csv.Configuration.HeaderValidated = null; List <SPKDocsCsvViewModel> Data = Csv.GetRecords <SPKDocsCsvViewModel>().ToList(); SPKDocsViewModel Data1 = await facade.MapToViewModel(Data, source, sourcec, sourcen, destination, destinationc, destinationn, date); Tuple <bool, List <object> > Validated = facade.UploadValidate(ref Data, Request.Form.ToList()); Reader.Close(); if (Validated.Item1) /* If Data Valid */ { SPKDocs data = mapper.Map <SPKDocs>(Data1); //foreach (var item in data) //{ // Transfrom(item); //} await facade.UploadData(data, identityService.Username); Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE) .Ok(); return(Created(HttpContext.Request.Path, Result)); } else { using (MemoryStream memoryStream = new MemoryStream()) { using (StreamWriter streamWriter = new StreamWriter(memoryStream)) using (CsvWriter csvWriter = new CsvWriter(streamWriter)) { csvWriter.WriteRecords(Validated.Item2); } return(File(memoryStream.ToArray(), ContentType, FileName)); } } } else { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, General.CSV_ERROR_MESSAGE) .Fail(); return(NotFound(Result)); } } else { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.NO_FILE_ERROR_MESSAGE) .Fail(); return(BadRequest(Result)); } } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public async Task <int> Create(TransferOutDocViewModel model, TransferOutDoc model2, string username, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { string codeOut = GenerateCode("EFR-KB/RTT"); string packingList1 = GenerateCode("EFR-KB/PLR"); string CodeIn = GenerateCode("EFR-TB/BRT"); string packingList2 = GenerateCode("EFR-KB/PLB"); string expCode = GenerateCode("EFR-KB/EXP"); string codetransferin = GenerateCode("EFR-TB/BRT"); model2.Code = codeOut; model2.Date = DateTimeOffset.Now; var storages = GetStorage("GDG.05"); var expeditionService = GetExpedition("Dikirim Sendiri"); List <ExpeditionItem> expeditionItems = new List <ExpeditionItem>(); List <ExpeditionDetail> expeditionDetails = new List <ExpeditionDetail>(); List <SPKDocsItem> sPKDocsItem1 = new List <SPKDocsItem>(); List <SPKDocsItem> sPKDocsItem2 = new List <SPKDocsItem>(); List <TransferInDocItem> transferInDocs = new List <TransferInDocItem>(); List <InventoryMovement> inventoryMovements = new List <InventoryMovement>(); List <TransferOutDocItem> transferOutDocItems = new List <TransferOutDocItem>(); EntityExtension.FlagForCreate(model2, username, USER_AGENT); foreach (var i in model2.Items) { var invenInTransfer = dbContext.Inventories.Where(x => x.ItemId == i.ItemId && x.StorageId == storages.Id).FirstOrDefault(); if (invenInTransfer == null) { Inventory inventory = new Inventory { ItemArticleRealizationOrder = i.ArticleRealizationOrder, ItemCode = i.ItemCode, ItemDomesticCOGS = i.DomesticCOGS, ItemDomesticRetail = i.DomesticRetail, ItemDomesticSale = i.DomesticSale, ItemDomesticWholeSale = i.DomesticWholeSale, ItemId = i.ItemId, ItemInternationalCOGS = 0, ItemInternationalRetail = 0, ItemInternationalSale = 0, ItemInternationalWholeSale = 0, ItemName = i.ItemName, ItemSize = i.Size, ItemUom = i.Uom, Quantity = 0, StorageCode = storages.Code, StorageId = storages.Id, StorageName = storages.Name, StorageIsCentral = storages.Name.Contains("GUDANG") ? true : false, }; EntityExtension.FlagForCreate(inventory, username, USER_AGENT); dbSetInventory.Add(inventory); transferOutDocItems.Add(new TransferOutDocItem { ArticleRealizationOrder = i.ArticleRealizationOrder, DomesticCOGS = i.DomesticCOGS, DomesticRetail = i.DomesticRetail, DomesticSale = i.DomesticSale, DomesticWholeSale = i.DomesticWholeSale, ItemCode = i.ItemCode, ItemId = i.ItemId, ItemName = i.ItemName, Quantity = i.Quantity, Remark = i.Remark, Size = i.Size, Uom = i.Uom }); } else { invenInTransfer.Quantity = invenInTransfer.Quantity - i.Quantity; } sPKDocsItem1.Add(new SPKDocsItem { ItemArticleRealizationOrder = i.ArticleRealizationOrder, ItemCode = i.ItemCode, ItemDomesticCOGS = i.DomesticCOGS, ItemDomesticRetail = i.DomesticRetail, ItemDomesticSale = i.DomesticSale, ItemDomesticWholesale = i.DomesticWholeSale, ItemId = i.ItemId, ItemName = i.ItemName, ItemSize = i.Size, ItemUom = i.Uom, Quantity = i.Quantity, Remark = i.Remark, SendQuantity = i.Quantity }); sPKDocsItem2.Add(new SPKDocsItem { ItemArticleRealizationOrder = i.ArticleRealizationOrder, ItemCode = i.ItemCode, ItemDomesticCOGS = i.DomesticCOGS, ItemDomesticRetail = i.DomesticRetail, ItemDomesticSale = i.DomesticSale, ItemDomesticWholesale = i.DomesticWholeSale, ItemId = i.ItemId, ItemName = i.ItemName, ItemSize = i.Size, ItemUom = i.Uom, Quantity = i.Quantity, Remark = i.Remark, SendQuantity = i.Quantity }); EntityExtension.FlagForCreate(i, username, USER_AGENT); } EntityExtension.FlagForCreate(model2, username, USER_AGENT); foreach (var i in model2.Items) { //var inventorymovement = new InventoryMovement(); transferInDocs.Add(new TransferInDocItem { ArticleRealizationOrder = i.ArticleRealizationOrder, ItemCode = i.ItemCode, DomesticCOGS = i.DomesticCOGS, DomesticRetail = i.DomesticRetail, DomesticSale = i.DomesticSale, DomesticWholeSale = i.DomesticWholeSale, ItemId = i.ItemId, ItemName = i.ItemName, Size = i.Size, Uom = i.Uom, Quantity = i.Quantity, Remark = i.Remark }); } SPKDocs sPKDocs1 = new SPKDocs { Code = GenerateCode("EFR-PK/PBJ"), Date = DateTimeOffset.Now, SourceId = model2.SourceId, SourceCode = model2.SourceCode, SourceName = model2.SourceName, DestinationId = storages.Id, DestinationCode = storages.Code, DestinationName = storages.Name, IsDistributed = true, IsReceived = true, IsDraft = false, PackingList = packingList1, Reference = codeOut, Password = String.Join("", GenerateCode(DateTime.Now.ToString("dd")).Split("/")), Weight = 0, Items = sPKDocsItem1 }; EntityExtension.FlagForCreate(sPKDocs1, username, USER_AGENT); TransferInDoc transferInDoc = new TransferInDoc { Code = codetransferin, Date = DateTimeOffset.Now, DestinationId = storages.Id, DestinationCode = storages.Code, DestinationName = storages.Name, SourceCode = model2.SourceCode, SourceId = model2.SourceId, SourceName = model2.SourceName, Reference = packingList1, Remark = "", Items = transferInDocs }; EntityExtension.FlagForCreate(transferInDoc, username, USER_AGENT); SPKDocs sPKDocs2 = new SPKDocs { Code = GenerateCode("EFR-PK/PBJ"), Date = DateTimeOffset.Now, DestinationId = model2.DestinationId, DestinationCode = model2.DestinationCode, DestinationName = model2.DestinationName, SourceId = storages.Id, SourceCode = storages.Code, SourceName = storages.Name, IsDistributed = true, IsReceived = false, IsDraft = false, PackingList = packingList2, Reference = codeOut, Password = String.Join("", GenerateCode(DateTime.Now.ToString("dd")).Split("/")), Weight = 0, Items = sPKDocsItem2 }; EntityExtension.FlagForCreate(sPKDocs2, username, USER_AGENT); foreach (var i in sPKDocs1.Items) { var QtySource = 0.0; var invenOutSource = dbContext.Inventories.Where(x => x.ItemId == i.ItemId && x.StorageId == model2.SourceId).FirstOrDefault(); if (invenOutSource != null) { QtySource = invenOutSource.Quantity; invenOutSource.Quantity = invenOutSource.Quantity - i.Quantity; } inventoryMovements.Add(new InventoryMovement { Before = QtySource, After = invenOutSource.Quantity, Date = DateTimeOffset.Now, ItemCode = i.ItemCode, ItemDomesticCOGS = i.ItemDomesticCOGS, ItemDomesticRetail = i.ItemDomesticRetail, ItemDomesticWholeSale = i.ItemDomesticRetail, ItemDomesticSale = i.ItemDomesticSale, ItemId = i.ItemId, ItemInternationalCOGS = 0, ItemInternationalRetail = 0, ItemInternationalSale = 0, ItemInternationalWholeSale = 0, ItemName = i.ItemName, ItemSize = i.ItemSize, ItemUom = i.ItemUom, Quantity = i.Quantity, StorageCode = model2.SourceCode, StorageId = model2.SourceId, StorageName = model2.SourceName, Type = "OUT", Reference = codeOut, Remark = model2.Remark, StorageIsCentral = model2.SourceName.Contains("GUDANG") ? true : false, }); inventoryMovements.Add(new InventoryMovement { Before = 0, After = 1, Date = DateTimeOffset.Now, ItemCode = i.ItemCode, ItemDomesticCOGS = i.ItemDomesticCOGS, ItemDomesticRetail = i.ItemDomesticRetail, ItemDomesticWholeSale = i.ItemDomesticRetail, ItemDomesticSale = i.ItemDomesticSale, ItemId = i.ItemId, ItemInternationalCOGS = 0, ItemInternationalRetail = 0, ItemInternationalSale = 0, ItemInternationalWholeSale = 0, ItemName = i.ItemName, ItemSize = i.ItemSize, ItemUom = i.ItemUom, Quantity = i.Quantity, StorageCode = storages.Code, StorageId = storages.Id, StorageName = storages.Name, Type = "IN", Reference = codetransferin, Remark = model2.Remark, StorageIsCentral = storages.Name.Contains("GUDANG") ? true : false, }); inventoryMovements.Add(new InventoryMovement { Before = 1, After = 0, Date = DateTimeOffset.Now, ItemCode = i.ItemCode, ItemDomesticCOGS = i.ItemDomesticCOGS, ItemDomesticRetail = i.ItemDomesticRetail, ItemDomesticWholeSale = i.ItemDomesticRetail, ItemDomesticSale = i.ItemDomesticSale, ItemId = i.ItemId, ItemInternationalCOGS = 0, ItemInternationalRetail = 0, ItemInternationalSale = 0, ItemInternationalWholeSale = 0, ItemName = i.ItemName, ItemSize = i.ItemSize, ItemUom = i.ItemUom, Quantity = i.Quantity, StorageCode = model2.DestinationCode, StorageId = model2.DestinationId, StorageName = model2.DestinationName, Type = "OUT", Reference = expCode, Remark = model2.Remark, StorageIsCentral = model2.DestinationName.Contains("GUDANG") ? true : false, }); expeditionDetails.Add(new ExpeditionDetail { ArticleRealizationOrder = i.ItemArticleRealizationOrder, DomesticCOGS = i.ItemDomesticCOGS, DomesticRetail = i.ItemDomesticRetail, DomesticSale = i.ItemDomesticSale, DomesticWholesale = i.ItemDomesticWholesale, ItemCode = i.ItemCode, ItemId = i.ItemId, ItemName = i.ItemName, Quantity = i.Quantity, Remark = i.Remark, SendQuantity = i.SendQuantity, Uom = i.ItemUom, Size = i.ItemSize, //SPKDocsId = (int)dbContext.SPKDocs.OrderByDescending(x=>x.Id).FirstOrDefault().Id + 1 SPKDocsId = (int)sPKDocs1.Id }); EntityExtension.FlagForCreate(i, username, USER_AGENT); } expeditionItems.Add(new ExpeditionItem { Code = sPKDocs2.Code, Date = sPKDocs2.Date, DestinationCode = sPKDocs2.DestinationCode, DestinationId = (int)sPKDocs2.DestinationId, DestinationName = sPKDocs2.DestinationName, IsDistributed = sPKDocs2.IsDistributed, IsDraft = sPKDocs2.IsDraft, IsReceived = sPKDocs2.IsReceived, PackingList = sPKDocs2.PackingList, Password = sPKDocs2.Password, Reference = codeOut, SourceCode = sPKDocs2.SourceCode, SourceId = (int)sPKDocs2.SourceId, SourceName = sPKDocs2.SourceName, //SPKDocsId = (int)dbContext.SPKDocs.OrderByDescending(x => x.Id).FirstOrDefault().Id + 1, SPKDocsId = (int)sPKDocs2.Id, Weight = sPKDocs2.Weight, Details = expeditionDetails }); Expedition expedition = new Expedition { Code = expCode, Date = DateTimeOffset.Now, ExpeditionServiceCode = expeditionService.code, ExpeditionServiceId = (int)expeditionService._id, ExpeditionServiceName = expeditionService.name, Remark = "", Weight = 0, Items = expeditionItems, }; EntityExtension.FlagForCreate(expedition, username, USER_AGENT); TransferOutDoc transferOutDoc2 = new TransferOutDoc { Code = expCode, Date = DateTimeOffset.Now, DestinationCode = model2.DestinationCode, DestinationId = model2.DestinationId, DestinationName = model2.DestinationName, Reference = packingList2, Remark = "", SourceId = storages.Id, SourceCode = storages.Code, SourceName = storages.Name, Items = transferOutDocItems }; EntityExtension.FlagForCreate(transferOutDoc2, username, USER_AGENT); #region Saving foreach (var i in transferOutDoc2.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); } foreach (var i in sPKDocs2.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); } foreach (var i in expedition.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); foreach (var d in i.Details) { EntityExtension.FlagForCreate(d, username, USER_AGENT); } } foreach (var i in transferInDoc.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); } foreach (var i in inventoryMovements) { EntityExtension.FlagForCreate(i, username, USER_AGENT); dbSetInventoryMovement.Add(i); } dbSetExpedition.Add(expedition); dbSetSpk.Add(sPKDocs1); dbSetSpk.Add(sPKDocs2); dbSet.Add(model2); dbSet.Add(transferOutDoc2); dbSetTransferIn.Add(transferInDoc); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); #endregion } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } return(Created); } }
public async Task <int> Create(SPKDocsFromFinihsingOutsViewModel viewModel, string username, string token) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { List <SPKDocsItem> sPKDocsItems = new List <SPKDocsItem>(); foreach (var item in viewModel.Items) { var isDifferentSize = item.IsDifferentSize; if (isDifferentSize == true) { foreach (var detail in item.Details) { var sizeId = detail.Size.Id.ToString("00"); var counterId = viewModel.counters._id.ToString("00"); var subCounterId = viewModel.subCounters._id.ToString("00"); var asal = viewModel.SourceId.ToString("0"); var roCreatedUtc = viewModel.RoCreatedUtc; var materialId = viewModel.materials._id.ToString("00"); var barcode = asal + counterId + subCounterId + materialId + sizeId + roCreatedUtc; Console.WriteLine("barcodefad " + barcode); var itemx = GetItem(barcode); if (itemx == null || itemx.Count() == 0) //barcode belum terdaftar, insert ke tabel items (BMS) terlebih dahulu { ItemCoreViewModelUsername itemCore = new ItemCoreViewModelUsername { dataDestination = new List <ItemViewModelRead> { new ItemViewModelRead { ArticleRealizationOrder = viewModel.RONo, code = barcode, name = viewModel.Comodity.name, Size = item.Size.Size, Uom = item.Uom.Unit, ImagePath = viewModel.ImagePath, ImgFile = "", Tags = "", Remark = "", Description = "", _id = 0 } }, color = viewModel.color, process = viewModel.process, materials = viewModel.materials, materialCompositions = viewModel.materialCompositions, collections = viewModel.collections, seasons = viewModel.seasons, counters = viewModel.counters, subCounters = viewModel.subCounters, categories = viewModel.categories, DomesticCOGS = item.BasicPrice, DomesticRetail = 0, DomesticSale = item.BasicPrice + item.ComodityPrice, DomesticWholesale = 0, InternationalCOGS = 0, InternationalWholesale = 0, InternationalRetail = 0, InternationalSale = 0, ImageFile = "", _id = 0, Username = username, Token = token, TotalQty = detail.Quantity }; string itemsUri = "items/finished-goods/item"; var httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = await httpClient.PostAsync($"{APIEndpoint.Core}{itemsUri}", new StringContent(JsonConvert.SerializeObject(itemCore).ToString(), Encoding.UTF8, General.JsonMediaType)); response.EnsureSuccessStatusCode(); var item2 = GetItem2(barcode); sPKDocsItems.Add(new SPKDocsItem { ItemArticleRealizationOrder = viewModel.RONo, ItemCode = barcode, ItemDomesticCOGS = item.BasicPrice, ItemDomesticSale = item.BasicPrice + item.ComodityPrice, ItemId = item2.FirstOrDefault()._id, ItemName = viewModel.Comodity.name, ItemSize = detail.Size.Size, ItemUom = item.Uom.Unit, Quantity = detail.Quantity, Remark = "", SendQuantity = detail.Quantity, }); } else // barcode sudah terdaftar { var existItemId = itemx.FirstOrDefault()._id; ItemCoreViewModelUsername itemCore = new ItemCoreViewModelUsername { _id = existItemId, Username = username, Token = token, TotalQty = detail.Quantity }; sPKDocsItems.Add(new SPKDocsItem { ItemArticleRealizationOrder = viewModel.RONo, ItemCode = barcode, ItemDomesticCOGS = item.BasicPrice, ItemDomesticSale = item.BasicPrice + item.ComodityPrice, ItemId = existItemId, ItemName = viewModel.Comodity.name, ItemSize = detail.Size.Size, ItemUom = item.Uom.Unit, Quantity = detail.Quantity, Remark = "", SendQuantity = detail.Quantity, }); //update TotalQty di tabel Items string itemPutUri = $"items/finished-goods/update-qty-by-id/{existItemId}"; IHttpClientService httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = await httpClient.PutAsync($"{APIEndpoint.Core}{itemPutUri}", new StringContent(JsonConvert.SerializeObject(itemCore).ToString(), Encoding.UTF8, General.JsonMediaType)); if (response != null) { response.EnsureSuccessStatusCode(); } } } } else { var sizeId = item.Size.Id.ToString("00"); var counterId = viewModel.counters._id.ToString("00"); var subCounterId = viewModel.subCounters._id.ToString("00"); var asal = viewModel.SourceId.ToString("0"); var roCreatedUtc = viewModel.RoCreatedUtc; var materialId = viewModel.materials._id.ToString("00"); var barcode = asal + counterId + subCounterId + materialId + sizeId + roCreatedUtc; Console.WriteLine("barcodefad " + barcode); var itemx = GetItem(barcode); if (itemx == null || itemx.Count() == 0) //barcode belum terdaftar, insert ke tabel items (BMS) terlebih dahulu { ItemCoreViewModelUsername itemCore = new ItemCoreViewModelUsername { dataDestination = new List <ItemViewModelRead> { new ItemViewModelRead { ArticleRealizationOrder = viewModel.RONo, code = barcode, name = viewModel.Comodity.name, Size = item.Size.Size, Uom = item.Uom.Unit, ImagePath = viewModel.ImagePath, ImgFile = "", Tags = "", Remark = "", Description = "", _id = 0 } }, color = viewModel.color, process = viewModel.process, materials = viewModel.materials, materialCompositions = viewModel.materialCompositions, collections = viewModel.collections, seasons = viewModel.seasons, counters = viewModel.counters, subCounters = viewModel.subCounters, categories = viewModel.categories, DomesticCOGS = item.BasicPrice, DomesticRetail = 0, DomesticSale = item.BasicPrice + item.ComodityPrice, DomesticWholesale = 0, InternationalCOGS = 0, InternationalWholesale = 0, InternationalRetail = 0, InternationalSale = 0, ImageFile = "", _id = 0, Username = username, Token = token, TotalQty = item.Quantity }; string itemsUri = "items/finished-goods/item"; var httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = await httpClient.PostAsync($"{APIEndpoint.Core}{itemsUri}", new StringContent(JsonConvert.SerializeObject(itemCore).ToString(), Encoding.UTF8, General.JsonMediaType)); response.EnsureSuccessStatusCode(); var item2 = GetItem2(barcode); sPKDocsItems.Add(new SPKDocsItem { ItemArticleRealizationOrder = viewModel.RONo, ItemCode = barcode, ItemDomesticCOGS = item.BasicPrice, ItemDomesticSale = item.BasicPrice + item.ComodityPrice, ItemId = item2.FirstOrDefault()._id, ItemName = viewModel.Comodity.name, ItemSize = item.Size.Size, ItemUom = item.Uom.Unit, Quantity = item.Quantity, Remark = "", SendQuantity = item.Quantity, }); } else // barcode sudah terdaftar { var existItemId = itemx.FirstOrDefault()._id; ItemCoreViewModelUsername itemCore = new ItemCoreViewModelUsername { _id = existItemId, Username = username, Token = token, TotalQty = item.Quantity }; sPKDocsItems.Add(new SPKDocsItem { ItemArticleRealizationOrder = viewModel.RONo, ItemCode = barcode, ItemDomesticCOGS = item.BasicPrice, ItemDomesticSale = item.BasicPrice + item.ComodityPrice, ItemId = existItemId, ItemName = viewModel.Comodity.name, ItemSize = item.Size.Size, ItemUom = item.Uom.Unit, Quantity = item.Quantity, Remark = "", SendQuantity = item.Quantity, }); //update TotalQty di tabel Items string itemPutUri = $"items/finished-goods/update-qty-by-id/{existItemId}"; IHttpClientService httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = await httpClient.PutAsync($"{APIEndpoint.Core}{itemPutUri}", new StringContent(JsonConvert.SerializeObject(itemCore).ToString(), Encoding.UTF8, General.JsonMediaType)); if (response != null) { response.EnsureSuccessStatusCode(); } } } } var packingListCode = GeneratePackingList(); SPKDocs data = new SPKDocs() { Code = GenerateCode("EFR-PK/PBJ"), Date = viewModel.FinishingOutDate, DestinationId = (long)viewModel.DestinationStorageId, DestinationCode = viewModel.DestinationStorageCode, DestinationName = viewModel.DestinationStorageName, IsDistributed = false, IsReceived = false, PackingList = packingListCode, Password = "******", Reference = packingListCode, SourceId = (long)viewModel.SourceStorageId, SourceCode = viewModel.SourceStorageCode, SourceName = viewModel.SourceStorageName, Weight = 0, FinishingOutIdentity = viewModel.FinishingOutIdentity, Items = sPKDocsItems }; foreach (var i in data.Items) { EntityExtension.FlagForCreate(i, username, USER_AGENT); } EntityExtension.FlagForCreate(data, username, USER_AGENT); dbContext.Add(data); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }