Beispiel #1
0
        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);
        }
Beispiel #3
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;
 }
Beispiel #7
0
        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'));
            }
        }
Beispiel #8
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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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;
            }
        }