public IActionResult GetVatPDF(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); GarmentInvoice model = facade.ReadById(id); GarmentInvoiceViewModel viewModel = mapper.Map <GarmentInvoiceViewModel>(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()); /* tambahan */ /* get gsupplier */ string supplierUri = "master/garment-suppliers"; var httpClient = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService)); var response = httpClient.GetAsync($"{Lib.Helpers.APIEndpoint.Core}{supplierUri}/{model.SupplierId}").Result.Content.ReadAsStringAsync(); Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(response.Result); SupplierViewModel supplier = JsonConvert.DeserializeObject <SupplierViewModel>(result.GetValueOrDefault("data").ToString()); /* tambahan */ VatPDFTemplate PdfTemplateLocal = new VatPDFTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, supplier, clientTimeZoneOffset, DOfacade); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.npn}.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 Should_Success_Get_Data_For_InternNote() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); var Responses = await facade.Create(data, USERNAME); var Response = facade.ReadForInternNote(new List <long> { data.Id }); Assert.NotEmpty(Response); }
public async Task Should_Success_Get_Buku_Sub_Beli_Excel_Null_Parameter() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); GarmentDailyPurchasingReportFacade DataInv = new GarmentDailyPurchasingReportFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod())); DateTime d1 = data.InvoiceDate.DateTime.AddDays(30); DateTime d2 = data.InvoiceDate.DateTime.AddDays(30); var Response = DataInv.GenerateExcelGDailyPurchasingReport(null, true, null, null, null, null, 7); Assert.IsType <System.IO.MemoryStream>(Response); }
public async Task Should_Success_Get_Buku_Sub_Beli_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); GarmentDailyPurchasingReportFacade DataInv = new GarmentDailyPurchasingReportFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod())); DateTime d1 = data.InvoiceDate.DateTime; DateTime d2 = data.InvoiceDate.DateTime; var Response = DataInv.GetGDailyPurchasingReport(null, true, null, null, null, null, 7); Assert.NotNull(Response.Item1); }
public async void Should_Success_Update_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); var newItem = new GarmentInvoiceItem { DeliveryOrderId = It.IsAny <int>(), DODate = DateTimeOffset.Now, DeliveryOrderNo = "donos", ArrivalDate = DateTimeOffset.Now, TotalAmount = 2000, PaymentType = "type", PaymentMethod = "method", Details = new List <GarmentInvoiceDetail> { new GarmentInvoiceDetail { EPOId = It.IsAny <int>(), EPONo = "epono", IPOId = It.IsAny <int>(), PRItemId = It.IsAny <int>(), PRNo = "prno", RONo = "12343", ProductId = It.IsAny <int>(), ProductCode = "code", ProductName = "name", UomId = It.IsAny <int>(), UomUnit = "ROLL", DOQuantity = 40, PricePerDealUnit = 5000, PaymentDueDays = 2, POSerialNumber = "PM132434" } } }; List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(newItem); data.Items = Newitems; var ResponseUpdate1 = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); }
public async Task <int> Create(GarmentInvoice model, string username, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { double _total = 0; EntityExtension.FlagForCreate(model, username, USER_AGENT); if (model.UseIncomeTax) { model.NPH = GenerateNPH(); } if (model.UseVat) { model.NPN = GenerateNPN(); } foreach (var item in model.Items) { _total += item.TotalAmount; GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (deliveryOrder != null) { deliveryOrder.IsInvoice = true; } EntityExtension.FlagForCreate(item, username, USER_AGENT); foreach (var detail in item.Details) { EntityExtension.FlagForCreate(detail, username, USER_AGENT); } } model.TotalAmount = _total; this.dbSet.Add(model); Created = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }
public int Delete(int id, string username) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var model = this.dbSet .Include(m => m.Items) .ThenInclude(i => i.Details) .SingleOrDefault(m => m.Id == id && !m.IsDeleted); EntityExtension.FlagForDelete(model, username, USER_AGENT); foreach (var item in model.Items) { GarmentInvoice garmentInvoice = this.dbContext.GarmentInvoices.FirstOrDefault(s => s.Id == item.InvoiceId); if (garmentInvoice != null) { garmentInvoice.HasInternNote = false; } EntityExtension.FlagForDelete(item, username, USER_AGENT); foreach (var detail in item.Details) { GarmentDeliveryOrder garmentDeliveryOrder = this.dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == detail.DOId); if (garmentDeliveryOrder != null) { garmentDeliveryOrder.InternNo = null; } EntityExtension.FlagForDelete(detail, username, USER_AGENT); var result = _garmentDebtBalanceService.EmptyInternalNote((int)garmentDeliveryOrder.Id).Result; } } Deleted = dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
public async Task <int> Create(GarmentInternNote m, bool isImport, string user, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForCreate(m, user, USER_AGENT); m.INNo = await GenerateNo(m, isImport, clientTimeZoneOffset); m.INDate = DateTimeOffset.Now; foreach (var item in m.Items) { foreach (var detail in item.Details) { GarmentExternalPurchaseOrderItem eksternalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.GarmentEPOId == detail.EPOId); GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id == eksternalPurchaseOrderItem.POId); detail.UnitId = internalPurchaseOrder.UnitId; detail.UnitCode = internalPurchaseOrder.UnitCode; detail.UnitName = internalPurchaseOrder.UnitName; EntityExtension.FlagForCreate(detail, user, USER_AGENT); } GarmentInvoice garmentInvoice = this.dbContext.GarmentInvoices.FirstOrDefault(s => s.Id == item.InvoiceId); garmentInvoice.HasInternNote = true; 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 Should_Success_Create_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); var Response = await facade.Create(data, USERNAME); Assert.NotEqual(Response, 0); GarmentInvoice data2 = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); DateTime dateWithoutOffset = new DateTime(2010, 8, 16, 13, 32, 00); data2.InvoiceDate = dateWithoutOffset; var Response1 = await facade.Create(data2, USERNAME); Assert.NotEqual(Response1, 0); }
public async Task Should_Success_Update_Data2() { var dbContext = _dbContext(GetCurrentMethod()); var facade = new GarmentInvoiceFacade(dbContext, ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, dbContext); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewDataViewModel(USERNAME); GarmentInvoiceItem item = await dataUtil(facade, GetCurrentMethod()).GetNewDataItem(USERNAME); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(item); data.Items = Newitems; var ResponseUpdate1 = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); dbContext.Entry(data).State = EntityState.Detached; foreach (var items in data.Items) { dbContext.Entry(items).State = EntityState.Detached; foreach (var detail in items.Details) { dbContext.Entry(detail).State = EntityState.Detached; } } var newData = dbContext.GarmentInvoices.AsNoTracking() .Include(m => m.Items) .ThenInclude(i => i.Details) .FirstOrDefault(m => m.Id == data.Id); newData.Items = newData.Items.Take(1).ToList(); var ResponseUpdate2 = await facade.Update((int)newData.Id, newData, USERNAME); Assert.NotEqual(ResponseUpdate2, 0); }
public IActionResult GetVatPDF(int id) { try { var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf"); GarmentInvoice model = facade.ReadById(id); GarmentInvoiceViewModel viewModel = mapper.Map <GarmentInvoiceViewModel>(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()); VatPDFTemplate PdfTemplateLocal = new VatPDFTemplate(); MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, clientTimeZoneOffset, DOfacade); return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = $"{viewModel.npn}.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 int Delete(int id, string username) { int Deleted = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { var model = this.dbSet .Include(m => m.Items) .ThenInclude(i => i.Details) .SingleOrDefault(m => m.Id == id && !m.IsDeleted); EntityExtension.FlagForDelete(model, username, USER_AGENT); foreach (var item in model.Items) { foreach (var detail in item.Details) { EntityExtension.FlagForDelete(model, username, USER_AGENT); } GarmentInvoice garmentInvoice = this.dbContext.GarmentInvoices.FirstOrDefault(s => s.Id == item.InvoiceId); garmentInvoice.HasInternNote = false; EntityExtension.FlagForDelete(model, username, USER_AGENT); } Deleted = dbContext.SaveChanges(); dbContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Deleted); }
public async Task Should_Error_Update_Data() { var facade = new GarmentInvoiceFacade(_dbContext(GetCurrentMethod()), ServiceProvider); GarmentInvoice data = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME); List <GarmentInvoiceItem> item = new List <GarmentInvoiceItem>(data.Items); data.Items.Add(new GarmentInvoiceItem { DeliveryOrderId = It.IsAny <int>(), DODate = DateTimeOffset.Now, DeliveryOrderNo = "donos", ArrivalDate = DateTimeOffset.Now, TotalAmount = 2000, Details = null }); var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME); Assert.NotEqual(ResponseUpdate, 0); var newItem = new GarmentInvoiceItem { DeliveryOrderId = It.IsAny <int>(), DODate = DateTimeOffset.Now, DeliveryOrderNo = "dono", ArrivalDate = DateTimeOffset.Now, TotalAmount = 2000, Details = null }; List <GarmentInvoiceItem> Newitems = new List <GarmentInvoiceItem>(data.Items); Newitems.Add(newItem); data.Items = Newitems; Exception errorNullItems = await Assert.ThrowsAsync <Exception>(async() => await facade.Update((int)data.Id, data, USERNAME)); Assert.NotNull(errorNullItems.Message); }
public async Task <int> Update(int id, GarmentInvoice model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { if (model.Items != null) { double total = 0; HashSet <long> detailIds = GetGarmentInvoiceId(id); foreach (var itemId in detailIds) { GarmentInvoiceItem data = model.Items.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { GarmentInvoiceItem dataItem = dbContext.GarmentInvoiceItems.FirstOrDefault(prop => prop.Id.Equals(itemId)); EntityExtension.FlagForDelete(dataItem, user, USER_AGENT); var Details = dbContext.GarmentInvoiceDetails.Where(prop => prop.InvoiceItemId.Equals(itemId)).ToList(); GarmentDeliveryOrder deliveryOrder = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id.Equals(dataItem.DeliveryOrderId)); deliveryOrder.IsInvoice = false; foreach (GarmentInvoiceDetail detail in Details) { EntityExtension.FlagForDelete(detail, user, USER_AGENT); } await _garmentDebtBalanceService.EmptyInvoice((int)dataItem.DeliveryOrderId); } else { EntityExtension.FlagForUpdate(data, user, USER_AGENT); } foreach (GarmentInvoiceItem item in model.Items) { total += item.TotalAmount; if (item.Id <= 0) { GarmentDeliveryOrder garmentDeliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (garmentDeliveryOrder != null) { garmentDeliveryOrder.IsInvoice = true; } EntityExtension.FlagForCreate(item, user, USER_AGENT); var deliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (deliveryOrder != null) { var amount = 0.0; var currencyAmount = 0.0; var vatAmount = 0.0; var currencyVATAmount = 0.0; var incomeTaxAmount = 0.0; var currencyIncomeTaxAmount = 0.0; if (model.CurrencyCode == "IDR") { amount = item.TotalAmount; if (model.IsPayVat) { vatAmount = item.TotalAmount * 0.1; } if (model.IsPayTax) { incomeTaxAmount = item.TotalAmount * model.IncomeTaxRate / 100; } } else { amount = item.TotalAmount * deliveryOrder.DOCurrencyRate.GetValueOrDefault(); currencyAmount = item.TotalAmount; if (model.IsPayVat) { vatAmount = amount * 0.1; currencyVATAmount = item.TotalAmount * 0.1; } if (model.IsPayTax) { incomeTaxAmount = amount * model.IncomeTaxRate / 100; currencyIncomeTaxAmount = item.TotalAmount * model.IncomeTaxRate / 100; } } await _garmentDebtBalanceService.UpdateFromInvoice((int)deliveryOrder.Id, new InvoiceFormDto((int)model.Id, model.InvoiceDate, model.InvoiceNo, amount, currencyAmount, vatAmount, incomeTaxAmount, model.IsPayVat, model.IsPayTax, currencyVATAmount, currencyIncomeTaxAmount, model.VatNo)); } } else { EntityExtension.FlagForUpdate(item, user, USER_AGENT); } foreach (GarmentInvoiceDetail detail in item.Details) { if (item.Id <= 0) { EntityExtension.FlagForCreate(detail, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(detail, user, USER_AGENT); } } } } } EntityExtension.FlagForUpdate(model, user, USER_AGENT); this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Update(int id, GarmentInternNote m, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = dbContext.Database.BeginTransaction()) { try { if (m.Items != null) { double total = 0; HashSet <long> detailIds = GetGarmentInternNoteId(id); foreach (var itemId in detailIds) { GarmentInternNoteItem data = m.Items.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { GarmentInternNoteItem dataItem = dbContext.GarmentInternNoteItems.FirstOrDefault(prop => prop.Id.Equals(itemId)); EntityExtension.FlagForDelete(dataItem, user, USER_AGENT); var Details = dbContext.GarmentInternNoteDetails.Where(prop => prop.GarmentItemINId.Equals(itemId)).ToList(); GarmentInvoice garmentInvoices = dbContext.GarmentInvoices.FirstOrDefault(s => s.Id.Equals(dataItem.InvoiceId)); if (garmentInvoices != null) { garmentInvoices.HasInternNote = false; } foreach (GarmentInternNoteDetail detail in Details) { GarmentDeliveryOrder garmentDeliveryOrder = this.dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == detail.DOId); garmentDeliveryOrder.InternNo = null; EntityExtension.FlagForDelete(detail, user, USER_AGENT); } } else { EntityExtension.FlagForUpdate(data, user, USER_AGENT); } foreach (GarmentInternNoteItem item in m.Items) { total += item.TotalAmount; if (item.Id <= 0) { GarmentInvoice garmentInvoice = this.dbContext.GarmentInvoices.FirstOrDefault(s => s.Id == item.InvoiceId); if (garmentInvoice != null) { garmentInvoice.HasInternNote = true; } EntityExtension.FlagForCreate(item, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(item, user, USER_AGENT); } foreach (GarmentInternNoteDetail detail in item.Details) { if (item.Id <= 0) { GarmentDeliveryOrder garmentDeliveryOrder = this.dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == detail.DOId); GarmentInternalPurchaseOrder internalPurchaseOrder = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.RONo == detail.RONo); if (internalPurchaseOrder != null) { detail.UnitId = internalPurchaseOrder.UnitId; detail.UnitCode = internalPurchaseOrder.UnitCode; detail.UnitName = internalPurchaseOrder.UnitName; } if (garmentDeliveryOrder != null) { garmentDeliveryOrder.InternNo = m.INNo; } EntityExtension.FlagForCreate(detail, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(detail, user, USER_AGENT); } } } } } EntityExtension.FlagForUpdate(m, user, USER_AGENT); this.dbSet.Update(m); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public UnitCostDto(GarmentInternNoteDetail detail, List <GarmentInternNoteItem> internNoteItems, GarmentInternNote element, GarmentInvoice elementInvoice) { Unit = new UnitDto(detail.UnitId, detail.UnitCode, detail.UnitName, "", "0", ""); var total = detail.PriceTotal; if (elementInvoice != null) { if (elementInvoice.UseVat) { total += detail.PriceTotal * 0.1; } if (elementInvoice.UseIncomeTax && !elementInvoice.IsPayTax) { total -= detail.PriceTotal * (elementInvoice.IncomeTaxRate / 100); } } PriceTotal = detail.PriceTotal; Amount = total; }
public InternalNoteInvoiceDto(GarmentInvoice internalNoteInvoice) { Invoice = new InvoiceDto(internalNoteInvoice); }
public IActionResult Get(int page = 1, int size = 25, string order = "{}", string keyword = null, string filter = "{}") { try { identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; var Data = facade.Read(page, size, order, keyword, filter); var viewModel = mapper.Map <List <GarmentInternNoteViewModel> >(Data.Item1); HashSet <long> garmentInvoiceIds = new HashSet <long>(viewModel.SelectMany(vm => vm.items.Select(i => i.garmentInvoice.Id))); List <GarmentInvoice> garmentInvoices = invoiceFacade.ReadForInternNote(garmentInvoiceIds.ToList()); HashSet <long> deliveryOrderIds = new HashSet <long>(viewModel.SelectMany(vm => vm.items.SelectMany(i => i.details.Select(d => d.deliveryOrder.Id)))); List <GarmentDeliveryOrder> garmentDeliveryOrders = deliveryOrderFacade.ReadForInternNote(deliveryOrderIds.ToList()); foreach (var d in viewModel) { foreach (var item in d.items) { GarmentInvoice garmentInvoice = garmentInvoices.SingleOrDefault(gi => gi.Id == item.garmentInvoice.Id); if (garmentInvoice != null) { GarmentInvoiceViewModel invoiceViewModel = mapper.Map <GarmentInvoiceViewModel>(garmentInvoice); item.garmentInvoice.items = invoiceViewModel.items; } foreach (var detail in item.details) { var deliveryOrder = garmentDeliveryOrders.SingleOrDefault(gdo => gdo.Id == detail.deliveryOrder.Id); if (deliveryOrder != null) { var deliveryOrderViewModel = mapper.Map <GarmentDeliveryOrderViewModel>(deliveryOrder); detail.deliveryOrder.items = deliveryOrderViewModel.items; } } } } List <object> listData = new List <object>(); listData.AddRange( viewModel.AsQueryable().Select(s => new { s.Id, s.inNo, s.inDate, supplier = new { s.supplier.Name }, items = s.items.Select(i => new { //i.garmentInvoice, garmentInvoice = new { i.garmentInvoice.invoiceNo, items = i.garmentInvoice.items == null ? null : i.garmentInvoice.items.Select(gii => new { details = gii.details == null ? null : gii.details.Select(gid => new { gid.dODetailId }) }) }, details = i.details.Select(d => new { //d.deliveryOrder deliveryOrder = new { items = d.deliveryOrder.items == null ? null : d.deliveryOrder.items.Select(doi => new { fulfillments = doi.fulfillments == null ? null : doi.fulfillments.Select(dof => new { dof.Id, dof.receiptQuantity }) }) } }).ToList(), }).ToList(), s.CreatedBy, s.LastModifiedUtc }).ToList() ); var info = new Dictionary <string, object> { { "count", listData.Count }, { "total", Data.Item2 }, { "order", Data.Item3 }, { "page", page }, { "size", size } }; Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.OK_STATUS_CODE, General.OK_MESSAGE) .Ok(listData, info); return(Ok(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> Update(int id, GarmentInvoice model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { if (model.Items != null) { double total = 0; HashSet <long> detailIds = GetGarmentInvoiceId(id); foreach (var itemId in detailIds) { GarmentInvoiceItem data = model.Items.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { GarmentInvoiceItem dataItem = dbContext.GarmentInvoiceItems.FirstOrDefault(prop => prop.Id.Equals(itemId)); EntityExtension.FlagForDelete(dataItem, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(data, user, USER_AGENT); } foreach (GarmentInvoiceItem item in model.Items) { total += item.TotalAmount; if (item.Id <= 0) { GarmentDeliveryOrder garmentDeliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (garmentDeliveryOrder != null) { garmentDeliveryOrder.IsInvoice = true; } EntityExtension.FlagForCreate(item, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(item, user, USER_AGENT); } foreach (GarmentInvoiceDetail detail in item.Details) { if (item.Id <= 0) { EntityExtension.FlagForCreate(detail, user, USER_AGENT); } else { EntityExtension.FlagForUpdate(detail, user, USER_AGENT); } } } } } EntityExtension.FlagForUpdate(model, user, USER_AGENT); this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
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; } }
public IActionResult Get(int page = 1, int size = 25, string order = "{}", string keyword = null, string filter = "{}") { try { identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; var Data = facade.Read(page, size, order, keyword, filter); var viewModel = mapper.Map <List <GarmentInternNoteViewModel> >(Data.Item1); foreach (var d in viewModel) { foreach (var item in d.items) { GarmentInvoice garmentInvoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id); if (garmentInvoice != null) { GarmentInvoiceViewModel invoiceViewModel = mapper.Map <GarmentInvoiceViewModel>(garmentInvoice); item.garmentInvoice.items = invoiceViewModel.items; } foreach (var detail in item.details) { var deliveryOrder = deliveryOrderFacade.ReadById((int)detail.deliveryOrder.Id); if (deliveryOrder != null) { var deliveryOrderViewModel = mapper.Map <GarmentDeliveryOrderViewModel>(deliveryOrder); detail.deliveryOrder.items = deliveryOrderViewModel.items; } } } } List <object> listData = new List <object>(); listData.AddRange( viewModel.AsQueryable().Select(s => new { s.Id, s.inNo, s.inDate, supplier = new { s.supplier.Name }, items = s.items.Select(i => new { i.garmentInvoice, details = i.details.Select(d => new { d.deliveryOrder }).ToList(), }).ToList(), s.CreatedBy, s.LastModifiedUtc }).ToList() ); var info = new Dictionary <string, object> { { "count", listData.Count }, { "total", Data.Item2 }, { "order", Data.Item3 }, { "page", page }, { "size", size } }; Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.OK_STATUS_CODE, General.OK_MESSAGE) .Ok(listData, info); return(Ok(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 <GarmentInternNote> GetNewData(GarmentInvoice invo = null) { var garmentInvoice = invo ?? await Task.Run(() => garmentInvoiceDataUtil.GetTestDataViewModel("User")); List <GarmentInternNoteDetail> garmentInternNoteDetails = new List <GarmentInternNoteDetail>(); foreach (var item in garmentInvoice.Items) { foreach (var detail in item.Details) { garmentInternNoteDetails.Add(new GarmentInternNoteDetail { EPOId = detail.EPOId, EPONo = detail.EPONo, POSerialNumber = detail.POSerialNumber, Quantity = (long)detail.DOQuantity, RONo = detail.RONo, DOId = item.DeliveryOrderId, DONo = item.DeliveryOrderNo, DODate = item.DODate, ProductId = detail.ProductId, ProductCode = detail.ProductCode, ProductName = detail.ProductName, PaymentType = item.PaymentType, PaymentMethod = item.PaymentMethod, PaymentDueDate = item.DODate.AddDays(detail.PaymentDueDays), UOMId = detail.UomId, UOMUnit = detail.UomUnit, PricePerDealUnit = detail.PricePerDealUnit, PriceTotal = detail.PricePerDealUnit * detail.PricePerDealUnit, }); } } List <GarmentInternNoteItem> garmentInternNoteItems = new List <GarmentInternNoteItem> { new GarmentInternNoteItem { InvoiceId = garmentInvoice.Id, InvoiceNo = garmentInvoice.InvoiceNo, InvoiceDate = garmentInvoice.InvoiceDate, TotalAmount = 20000, Details = garmentInternNoteDetails } }; GarmentInternNote garmentInternNote = new GarmentInternNote { INNo = "NI1234L", INDate = new DateTimeOffset(), SupplierId = garmentInvoice.SupplierId, SupplierCode = garmentInvoice.SupplierCode, SupplierName = garmentInvoice.SupplierCode, CurrencyId = garmentInvoice.CurrencyId, CurrencyCode = garmentInvoice.CurrencyCode, CurrencyRate = 5, Remark = null, Items = garmentInternNoteItems }; return(garmentInternNote); }
public async Task <int> Create(GarmentInvoice model, string username, int clientTimeZoneOffset = 7) { int Created = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { double _total = 0; EntityExtension.FlagForCreate(model, username, USER_AGENT); if (model.UseIncomeTax) { model.NPH = GenerateNPH(); } if (model.UseVat) { model.NPN = GenerateNPN(); } foreach (var item in model.Items) { _total += item.TotalAmount; GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (deliveryOrder != null) { deliveryOrder.IsInvoice = true; } EntityExtension.FlagForCreate(item, username, USER_AGENT); foreach (var detail in item.Details) { EntityExtension.FlagForCreate(detail, username, USER_AGENT); } } model.TotalAmount = _total; this.dbSet.Add(model); Created = await dbContext.SaveChangesAsync(); foreach (var item in model.Items) { var deliveryOrder = dbSetDeliveryOrder.FirstOrDefault(s => s.Id == item.DeliveryOrderId); if (deliveryOrder != null) { var amount = 0.0; var currencyAmount = 0.0; var vatAmount = 0.0; var currencyVATAmount = 0.0; var incomeTaxAmount = 0.0; var currencyIncomeTaxAmount = 0.0; if (model.CurrencyCode == "IDR") { amount = item.TotalAmount; if (model.IsPayVat) { vatAmount = item.TotalAmount * 0.1; //vatAmount = item.TotalAmount * (model.VatRate / 100); } if (model.IsPayTax) { incomeTaxAmount = item.TotalAmount * model.IncomeTaxRate / 100; } } else { amount = item.TotalAmount * deliveryOrder.DOCurrencyRate.GetValueOrDefault(); currencyAmount = item.TotalAmount; if (model.IsPayVat) { vatAmount = amount * 0.1; //vatAmount = amount * (model.VatRate / 100); currencyVATAmount = item.TotalAmount * 0.1; //currencyVATAmount = item.TotalAmount * (model.VatRate / 100); } if (model.IsPayTax) { incomeTaxAmount = amount * model.IncomeTaxRate / 100; currencyIncomeTaxAmount = item.TotalAmount * model.IncomeTaxRate / 100; } } await _garmentDebtBalanceService.UpdateFromInvoice((int)deliveryOrder.Id, new InvoiceFormDto((int)model.Id, model.InvoiceDate, model.InvoiceNo, amount, currencyAmount, vatAmount, incomeTaxAmount, model.IsPayVat, model.IsPayTax, currencyVATAmount, currencyIncomeTaxAmount, model.VatNo)); } } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Created); }