public async Task <GarmentExternalPurchaseOrder> GetTestDataForDo2(GarmentExternalPurchaseOrder data = null) { data = data ?? await GetDataForDo2(); await facade.Create(data, "Unit Test"); return(data); }
public async void Should_Success_EPOClose() { GarmentExternalPurchaseOrderFacade facade = new GarmentExternalPurchaseOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); GarmentExternalPurchaseOrder model = await dataUtil(facade, GetCurrentMethod()).GetTestDataAcc(); var Response = facade.EPOClose((int)model.Id, "Unit Test"); Assert.NotEqual(Response, 0); }
//public POExternalDto(GarmentExternalPurchaseOrder entity, List<long> poIds, List<GarmentInternalPurchaseOrder> purchaseOrders) //{ // Id = (int)entity.Id; // No = entity.EPONo; // Items = entity.Items.Select(element => new POExternalItemDto(element, entity, purchaseOrders)).ToList(); //} public POExternalDto(GarmentExternalPurchaseOrder entity, List <GarmentInternalPurchaseOrder> purchaseOrders) { Id = (int)entity.Id; No = entity.EPONo; Items = entity.Items.Select(element => { var purchaseOrder = purchaseOrders.FirstOrDefault(po => po.Id == element.POId); return(new POExternalItemDto(element, entity, purchaseOrder)); }).ToList(); }
public async void Should_Success_EPOApprove() { GarmentExternalPurchaseOrderFacade facade = new GarmentExternalPurchaseOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); List <GarmentExternalPurchaseOrder> modelList = new List <GarmentExternalPurchaseOrder>(); GarmentExternalPurchaseOrder model = await dataUtil(facade, GetCurrentMethod()).GetTestDataAcc(); modelList.Add(model); var Response = facade.EPOApprove(modelList, "Unit Test"); Assert.NotEqual(Response, 0); }
public IActionResult Get(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); GarmentExternalPurchaseOrder model = facade.ReadById(id); GarmentExternalPurchaseOrderViewModel viewModel = mapper.Map <GarmentExternalPurchaseOrderViewModel>(model); if (viewModel == null) { throw new Exception("Invalid Id"); } if (indexAcceptPdf < 0) { viewModel.IsUnpost = facade.GetIsUnpost(id); 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()); SupplierViewModel supplier = facade.GetSupplier(viewModel.Supplier.Id); viewModel.Supplier = supplier == null? viewModel.Supplier : supplier; foreach (var item in viewModel.Items) { GarmentInternalPurchaseOrder ipo = IPOfacade.ReadById(item.POId); item.ShipmentDate = ipo == null ? item.ShipmentDate : ipo.ShipmentDate; GarmentProductViewModel product = facade.GetProduct(item.Product.Id); item.Product = product == null ? item.Product : product; } GarmentExternalPurchaseOrderPDFTemplate PdfTemplateLocal = new GarmentExternalPurchaseOrderPDFTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, clientTimeZoneOffset); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.EPONo}.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 POExternalItemDto(GarmentExternalPurchaseOrderItem element, GarmentExternalPurchaseOrder entity, GarmentInternalPurchaseOrder purchaseOrder) { Product = new ProductDto(element.ProductCode, element.ProductId, element.ProductName, element.DefaultUomId, element.DefaultUomUnit); DefaultQuantity = element.DefaultQuantity; DealQuantity = element.DealQuantity; DealUOM = new UOMDto(element.DealUomId, element.DealUomUnit); Conversion = element.Conversion; Price = element.PricePerDealUnit; UseVat = entity.IsUseVat; Unit = new UnitDto(purchaseOrder.UnitId, purchaseOrder.UnitCode, purchaseOrder.UnitName, purchaseOrder.DivisionCode, purchaseOrder.DivisionId, purchaseOrder.DivisionName); IncomeTax = new IncomeTaxDto(entity.IncomeTaxId, entity.IncomeTaxName, entity.IncomeTaxRate); UseIncomeTax = entity.IsIncomeTax; EPOId = (int)entity.Id; }
async Task <string> GenerateNo(GarmentExternalPurchaseOrder model, int clientTimeZoneOffset) { DateTimeOffset Now = model.OrderDate; string Year = Now.ToOffset(new TimeSpan(clientTimeZoneOffset, 0, 0)).ToString("yy");; string Month = Now.ToOffset(new TimeSpan(clientTimeZoneOffset, 0, 0)).ToString("MM");; string no = $"PO{Year}{Month}"; int Padding = 5; var lastNo = await this.dbSet.Where(w => w.EPONo.StartsWith(no) && !w.IsDeleted).OrderByDescending(o => o.EPONo).FirstOrDefaultAsync(); no = $"{no}"; if (lastNo == null) { return(no + "1".PadLeft(Padding, '0')); } else { int lastNoNumber = Int32.Parse(lastNo.EPONo.Replace(no, "")) + 1; return(no + lastNoNumber.ToString().PadLeft(Padding, '0')); } }
public async Task <int> Create(GarmentExternalPurchaseOrder m, string user, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { foreach (var item in m.Items) { if (item.IsOverBudget) { m.IsOverBudget = true; break; } } m.EPONo = await GenerateNo(m, clientTimeZoneOffset); EntityExtension.FlagForCreate(m, user, USER_AGENT); foreach (var item in m.Items) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(item.POId)); internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItem.ProductId) { IPOItem.Status = "Sudah dibuat PO Eksternal"; } if ((m.PaymentMethod == "CMT" || m.PaymentMethod == "FREE FROM BUYER") && (m.PaymentType == "FREE" || m.PaymentType == "EX MASTER FREE")) { item.UsedBudget = 0; } else { var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); foreach (var a in ipoItems) { a.RemainingBudget -= item.UsedBudget; } } EntityExtension.FlagForCreate(item, user, USER_AGENT); } this.dbSet.Add(m); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public async Task <int> Update(int id, GarmentExternalPurchaseOrder 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) .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted); m.IsOverBudget = false; foreach (var item in m.Items) { if (item.IsOverBudget) { m.IsOverBudget = true; break; } } if (oldM != null && oldM.Id == id) { EntityExtension.FlagForUpdate(m, user, USER_AGENT); foreach (var Olditem in oldM.Items) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(Olditem.POId)); //internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(Olditem.POId)); var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(Olditem.ProductId.ToString())).ToList(); //returning Values foreach (var a in ipoItems) { a.RemainingBudget += Olditem.UsedBudget; } } foreach (var item in m.Items) { if (item.Id == 0) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(item.POId)); internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); if (item.ProductId.ToString() == IPOItem.ProductId) { IPOItem.Status = "Sudah dibuat PO Eksternal"; } if ((m.PaymentMethod == "CMT" || m.PaymentMethod == "FREE FROM BUYER") && (m.PaymentType == "FREE" || m.PaymentType == "EX MASTER FREE")) { item.UsedBudget = 0; } else { var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); foreach (var a in ipoItems) { a.RemainingBudget -= item.UsedBudget; } } EntityExtension.FlagForCreate(item, user, USER_AGENT); } else { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(item.POId)); internalPurchaseOrder.IsPosted = true; GarmentInternalPurchaseOrderItem IPOItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId)); var ipoItems = this.dbContext.GarmentInternalPurchaseOrderItems.Where(a => a.GPRItemId.Equals(IPOItem.GPRItemId) && a.ProductId.Equals(item.ProductId.ToString())).ToList(); if ((m.PaymentMethod == "CMT" || m.PaymentMethod == "FREE FROM BUYER") && (m.PaymentType == "FREE" || m.PaymentType == "EX MASTER FREE")) { item.UsedBudget = 0; } else { foreach (var a in ipoItems) { a.RemainingBudget -= item.UsedBudget; } } EntityExtension.FlagForUpdate(item, user, USER_AGENT); } } dbSet.Update(m); foreach (var oldItem in oldM.Items) { var newItem = m.Items.FirstOrDefault(i => i.Id.Equals(oldItem.Id)); if (newItem == null) { GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(oldItem.POId)); internalPurchaseOrder.IsPosted = false; GarmentInternalPurchaseOrderItem IPOItems = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(oldItem.POId)); if (oldItem.ProductId.ToString() == IPOItems.ProductId) { IPOItems.Status = "PO Internal belum diorder"; } EntityExtension.FlagForDelete(oldItem, user, USER_AGENT); dbContext.GarmentExternalPurchaseOrderItems.Update(oldItem); } } Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } else { throw new Exception("Invalid Id"); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <(GarmentExternalPurchaseOrder garmentExternalPurchaseOrder, GarmentInternalPurchaseOrder garmentInternalPurchaseOrder)> GetNewTotalData() { var result = await garmentPurchaseOrderDataUtil.GetTestData(); var data = result.FirstOrDefault(); var GarmentExternalPurchaseOrder = new GarmentExternalPurchaseOrder { SupplierId = 1, SupplierCode = "Supplier1", SupplierImport = true, SupplierName = "supplier1", Category = "FABRIC", DarkPerspiration = "dark", WetRubbing = "wet", DryRubbing = "dry", LightMedPerspiration = "light", Washing = "wash", Shrinkage = "shrink", QualityStandardType = "quality", PieceLength = "piece", PaymentMethod = "T/T PAYMENT", PaymentType = "payType", IncomeTaxId = "1", IncomeTaxName = "income1", IncomeTaxRate = "1", DeliveryDate = new DateTimeOffset(), OrderDate = new DateTime(1970, 1, 1), CurrencyId = 1, CurrencyCode = "currency1", CurrencyRate = 1, IsApproved = true, IsOverBudget = true, IsPosted = true, IsCanceled = false, IsDeleted = false, Remark = "Remark1", Items = new List <GarmentExternalPurchaseOrderItem> { new GarmentExternalPurchaseOrderItem { IsDeleted = false, PO_SerialNumber = "PO_SerialNumber1", POId = (int)data.Id, PONo = data.PONo, PRNo = data.PRNo, PRId = 1, ProductId = 1, ProductCode = "FAB001", ProductName = "FABRIC", DealQuantity = 5, BudgetPrice = 5, DealUomId = 1, DealUomUnit = "UomUnit1", DefaultQuantity = 5, DefaultUomId = 1, DefaultUomUnit = "unit1", SmallUomId = 1, SmallUomUnit = "UomUnit1", UsedBudget = 1, PricePerDealUnit = 1, Conversion = 1, RONo = data.RONo, Remark = "ProductRemark" } } }; return(GarmentExternalPurchaseOrder, data); }
public async Task <GarmentExternalPurchaseOrder> GetDataForDo2(List <GarmentInternalPurchaseOrder> garmentInternalPurchaseOrders = null) { var datas = await Task.Run(() => garmentPurchaseOrderDataUtil.GetTestDataByTags(garmentInternalPurchaseOrders)); var epo = new GarmentExternalPurchaseOrder { SupplierId = 1, SupplierCode = "Supplier1", SupplierImport = true, SupplierName = "supplier1", Category = "FABRIC", DarkPerspiration = "dark", WetRubbing = "wet", DryRubbing = "dry", LightMedPerspiration = "light", Washing = "wash", Shrinkage = "shrink", QualityStandardType = "quality", PieceLength = "piece", PaymentMethod = "pay", PaymentType = "payType", IncomeTaxId = "1", IncomeTaxName = "income1", IncomeTaxRate = "1", DeliveryDate = new DateTimeOffset(), OrderDate = new DateTimeOffset(), CurrencyId = 1, CurrencyCode = "currency1", CurrencyRate = 1, IsApproved = false, IsOverBudget = false, IsPosted = false, Remark = "Remark1", Items = new List <GarmentExternalPurchaseOrderItem>() }; foreach (var data in datas) { foreach (var item in data.Items) { epo.Items.Add(new GarmentExternalPurchaseOrderItem { PO_SerialNumber = item.PO_SerialNumber ?? "PO_SerialNumber1", POId = (int)data.Id, PONo = data.PONo, PRNo = data.PRNo, PRId = (int)data.PRId, ProductId = 1, ProductCode = "ProductCode1", ProductName = "ProductName1", DealQuantity = 5, BudgetPrice = 5, DealUomId = 1, DealUomUnit = "UomUnit1", DefaultQuantity = 5, DefaultUomId = 1, DefaultUomUnit = "unit1", UsedBudget = 1, PricePerDealUnit = 1, Conversion = 1, RONo = data.RONo, Remark = "ProductRemark", IsOverBudget = true, OverBudgetRemark = "TestRemarkOB", ReceiptQuantity = 0, DOQuantity = 0, SmallUomId = 1, SmallUomUnit = "UomUnit1", }); } } return(epo); }
public DataUtilResult(BasicDataUtil dataUtil, GarmentPurchaseRequest purchaseRequest, List <GarmentInternalPurchaseOrder> internalPurchaseOrders, GarmentExternalPurchaseOrder externalPurchaseOrder, GarmentDeliveryOrder deliveryOrder) { this.dataUtil = dataUtil; this.purchaseRequest = purchaseRequest; this.internalPurchaseOrders = internalPurchaseOrders; this.externalPurchaseOrder = externalPurchaseOrder; this.deliveryOrder = deliveryOrder; }
public async Task <GarmentDeliveryOrder> GetNewData5(GarmentExternalPurchaseOrder garmentExternalPurchaseOrder = null) { var datas = await Task.Run(() => garmentExternalPurchaseOrderDataUtil.GetTestDataForDo2(garmentExternalPurchaseOrder)); Random rnd = new Random(); long nowTicks = DateTimeOffset.Now.Ticks; string nowTicksA = $"{nowTicks}a"; string nowTicksB = $"{nowTicks}b"; var gdo = new GarmentDeliveryOrder { DONo = $"{nowTicksB}", SupplierId = 1, SupplierCode = $"BuyerCode{nowTicksB}", SupplierName = $"BuyerName{nowTicksB}", DODate = DateTimeOffset.Now, ArrivalDate = DateTimeOffset.Now, ShipmentType = $"ShipmentType{nowTicksB}", ShipmentNo = $"ShipmentNo{nowTicksB}", Remark = $"Remark{nowTicksB}", IsClosed = false, IsCustoms = false, IsInvoice = false, UseVat = datas.IsUseVat, UseIncomeTax = datas.IsIncomeTax, IncomeTaxId = Convert.ToInt32(datas.IncomeTaxId), IncomeTaxName = datas.IncomeTaxName, IncomeTaxRate = Convert.ToDouble(datas.IncomeTaxRate), IsCorrection = false, InternNo = $"{nowTicksB}", PaymentBill = $"{nowTicksA}", BillNo = $"{nowTicksA}", PaymentType = datas.PaymentType, PaymentMethod = datas.PaymentMethod, DOCurrencyId = datas.CurrencyId, DOCurrencyCode = datas.CurrencyCode, DOCurrencyRate = datas.CurrencyRate, TotalAmount = nowTicks, Items = new List <GarmentDeliveryOrderItem>() }; foreach (var item in datas.Items) { gdo.Items.Add(new GarmentDeliveryOrderItem { EPOId = datas.Id, EPONo = datas.EPONo, CurrencyId = datas.CurrencyId, CurrencyCode = "USD", PaymentDueDays = datas.PaymentDueDays, Details = new List <GarmentDeliveryOrderDetail> { new GarmentDeliveryOrderDetail { EPOItemId = item.Id, POId = item.POId, POItemId = (int)nowTicks, PRId = item.PRId, PRNo = item.PRNo, PRItemId = nowTicks, POSerialNumber = item.PO_SerialNumber, UnitId = $"{nowTicksB}", UnitCode = $"{nowTicksB}", ProductId = item.ProductId, ProductCode = item.ProductCode, ProductName = item.ProductName, ProductRemark = item.Remark, DOQuantity = item.DOQuantity, DealQuantity = item.DealQuantity, Conversion = item.Conversion, UomId = item.DealUomId.ToString(), UomUnit = item.DealUomUnit, SmallQuantity = item.SmallQuantity, SmallUomId = item.SmallUomId.ToString(), SmallUomUnit = item.SmallUomUnit, PricePerDealUnit = item.PricePerDealUnit, PriceTotal = item.PricePerDealUnit, RONo = item.RONo, ReceiptQuantity = 0, QuantityCorrection = item.DOQuantity, PricePerDealUnitCorrection = item.PricePerDealUnit, PriceTotalCorrection = item.PricePerDealUnit, CodeRequirment = $"{nowTicksA}", ReturQuantity = 0 } } }); } return(gdo); }
public ReportIndexDto(GarmentDeliveryOrder garmentDeliveryOrders, GarmentBeacukaiItem deliveryOrderCustoms, GarmentDeliveryOrderItem deliveryOrderItems, GarmentInvoiceItem deliveryOrderInvoiceItems, GarmentInvoice deliveryOrderInvoices, GarmentExternalPurchaseOrder deliveryOrderExternalPurchaseOrders, GarmentInternNoteDetail deliveryOrderInternalNoteDetails, GarmentInternNoteItem deliveryOrderInternalNoteItems, GarmentInternNote deliveryOrderInternalNotes) { if (deliveryOrderCustoms != null) { CustomsArrivalDate = deliveryOrderCustoms.ArrivalDate; } if (deliveryOrderExternalPurchaseOrders != null) { SupplierId = deliveryOrderExternalPurchaseOrders.SupplierId; SupplierName = deliveryOrderExternalPurchaseOrders.SupplierName; IsImportSupplier = deliveryOrderExternalPurchaseOrders.SupplierImport; AccountingCategoryName = deliveryOrderExternalPurchaseOrders.Category; PurchasingCategoryName = deliveryOrderExternalPurchaseOrders.Category; } var dppAmount = 0.0; if (deliveryOrderInternalNoteDetails != null) { ProductName = deliveryOrderInternalNoteDetails.ProductName; InternalNoteQuantity = deliveryOrderInternalNoteDetails.Quantity; dppAmount = deliveryOrderInternalNoteDetails.PriceTotal; Total = dppAmount; } if (garmentDeliveryOrders != null) { GarmentDeliveryOrderId = (int)garmentDeliveryOrders.Id; GarmentDeliveryOrderNo = garmentDeliveryOrders.DONo; BillNo = garmentDeliveryOrders.BillNo; PaymentBill = garmentDeliveryOrders.PaymentBill; } if (deliveryOrderInvoices != null) { InvoiceId = (int)deliveryOrderInvoices.Id; InvoiceNo = deliveryOrderInvoices.InvoiceNo; VATNo = deliveryOrderInvoices.VatNo; var vatAmount = 0.0; if (deliveryOrderInvoices.UseVat && deliveryOrderInvoices.IsPayVat) { vatAmount = dppAmount * 0.1; Total += vatAmount; } var incomeTaxAmount = 0.0; if (deliveryOrderInvoices.UseIncomeTax && deliveryOrderInvoices.IsPayTax) { incomeTaxAmount = dppAmount * deliveryOrderInvoices.IncomeTaxRate / 100; Total += incomeTaxAmount; } VATAmount = vatAmount; IncomeTaxAmount = incomeTaxAmount; } }