public IActionResult Get(int id)
        {
            try
            {
                var model = facade.ReadById(id);
                var viewModel = mapper.Map<GarmentInternNoteViewModel>(model);
                if (viewModel == null)
                {
                    throw new Exception("Invalid Id");
                }
                else
                {
                    viewModel.isEdit = model.Position <= PurchasingGarmentExpeditionPosition.Purchasing;
                    foreach (GarmentInternNoteItemViewModel item in viewModel.items)
                    {
                        GarmentInvoice garmentInvoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id);
                        if (garmentInvoice != null)
                        {
                            GarmentInvoiceViewModel invoiceViewModel = mapper.Map<GarmentInvoiceViewModel>(garmentInvoice);

                            item.garmentInvoice.items = invoiceViewModel.items;

                        }
                        foreach (GarmentInternNoteDetailViewModel detail in item.details)
                        {
                            GarmentDeliveryOrder deliveryOrder = deliveryOrderFacade.ReadById((int)detail.deliveryOrder.Id);
                            if (deliveryOrder != null)
                            {
                                GarmentDeliveryOrderViewModel deliveryOrderViewModel = mapper.Map<GarmentDeliveryOrderViewModel>(deliveryOrder);
                                detail.deliveryOrder.items = deliveryOrderViewModel.items;
                                if (detail.invoiceDetailId != 0)
                                {
                                    var invoiceItem = garmentInvoice.Items.First(s => s.Details.Any(d => d.Id == detail.invoiceDetailId));

                                    var invoiceDetail = invoiceItem.Details.First(i => i.Id == detail.invoiceDetailId);

                                    if (invoiceDetail != null)
                                    {
                                        detail.dODetailId = invoiceDetail.DODetailId;
                                    }
                                }

                            }
                        }
                    }
                }

                Dictionary<string, object> Result =
                    new ResultFormatter(ApiVersion, General.OK_STATUS_CODE, General.OK_MESSAGE)
                    .Ok(viewModel);
                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);
            }
        }
예제 #2
0
        public IActionResult GetIncomePDF(int id)
        {
            try
            {
                identityService.Token = Request.Headers["Authorization"].FirstOrDefault().Replace("Bearer ", "");
                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 */

                    IncomeTaxPDFTemplate PdfTemplateLocal = new IncomeTaxPDFTemplate();
                    MemoryStream         stream           = PdfTemplateLocal.GeneratePdfTemplate(viewModel, supplier, clientTimeZoneOffset, DOfacade);

                    return(new FileStreamResult(stream, "application/pdf")
                    {
                        FileDownloadName = $"{viewModel.nph}.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));
            }
        }
예제 #3
0
        public IActionResult GetInternNotePDF(int id)
        {
            try
            {
                var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf");

                GarmentInternNote          model     = facade.ReadById(id);
                GarmentInternNoteViewModel viewModel = mapper.Map <GarmentInternNoteViewModel>(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;
                        }
                    }

                    GarmentInternNotePDFTemplate PdfTemplateLocal = new GarmentInternNotePDFTemplate();
                    MemoryStream stream = PdfTemplateLocal.GeneratePdfTemplate(viewModel, clientTimeZoneOffset, deliveryOrderFacade);

                    return(new FileStreamResult(stream, "application/pdf")
                    {
                        FileDownloadName = $"{viewModel.inNo}.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));
            }
        }
예제 #4
0
        public IActionResult GetIncomePDF(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());

                    IncomeTaxPDFTemplate PdfTemplateLocal = new IncomeTaxPDFTemplate();
                    MemoryStream         stream           = PdfTemplateLocal.GeneratePdfTemplate(viewModel, clientTimeZoneOffset, DOfacade);

                    return(new FileStreamResult(stream, "application/pdf")
                    {
                        FileDownloadName = $"{viewModel.nph}.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 IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            IGarmentInvoice             invoiceFacade = validationContext == null ? null : (IGarmentInvoice)validationContext.GetService(typeof(IGarmentInvoice));
            IGarmentDeliveryOrderFacade doFacade      = validationContext == null ? null : (IGarmentDeliveryOrderFacade)validationContext.GetService(typeof(IGarmentDeliveryOrderFacade));

            if (currency == null)
            {
                yield return(new ValidationResult("currency is required", new List <string> {
                    "currency"
                }));
            }
            if (supplier == null)
            {
                yield return(new ValidationResult("Supplier is required", new List <string> {
                    "supplier"
                }));
            }

            int itemErrorCount   = 0;
            int detailErrorCount = 0;

            if (this.items == null || items.Count <= 0)
            {
                yield return(new ValidationResult("Item is required", new List <string> {
                    "itemscount"
                }));
            }
            else
            {
                //Enhance Jason Sept 2021
                List <string> arrNo = new List <string>();
                foreach (var detailItem in items)
                {
                    if (detailItem.garmentInvoice != null)
                    {
                        arrNo.Add(detailItem.garmentInvoice.invoiceNo);
                    }
                }

                string itemError        = "[";
                bool?  prevUseIncomeTax = null;
                bool?  prevUseVat       = null;
                string paymentMethod    = "";
                long?  IncomeTaxId      = null;

                foreach (var item in items)
                {
                    itemError += "{";

                    if (item.garmentInvoice == null || item.garmentInvoice.Id == 0)
                    {
                        itemErrorCount++;
                        itemError += "garmentInvoice: 'No Garment Invoice selected', ";
                    }
                    else
                    {
                        //Enhance Jason Sept 2019 : Invoice No Validation

                        //Check Duplicate Invoice No for 1 Invoice
                        //if (arrNo.FindAll(e => e == item.garmentInvoice.invoiceNo).Count > 1)
                        //{
                        //    itemErrorCount++;
                        //    itemError += "garmentInvoice: 'there is duplication of invoiceNo " + item.garmentInvoice.invoiceNo + "', ";
                        //}

                        if (items.ToList().Where(x => x.garmentInvoice.invoiceNo == item.garmentInvoice.invoiceNo && x.garmentInvoice.invoiceDate == item.garmentInvoice.invoiceDate).Count() > 1)
                        {
                            itemErrorCount++;
                            itemError += "garmentInvoice: 'there is duplication of invoiceNo " + item.garmentInvoice.invoiceNo + "', ";
                        }

                        //Check if Invoice No for Specific Supplier is Existed
                        PurchasingDbContext purchasingDbContext = (PurchasingDbContext)validationContext.GetService(typeof(PurchasingDbContext));
                        var detailData = purchasingDbContext.GarmentInternNoteItems.Where(w => w.InvoiceId == item.garmentInvoice.Id && w.InvoiceDate == item.garmentInvoice.invoiceDate && w.IsDeleted == false).Select(s => new { s.Id, s.GarmentINId, s.InvoiceId, s.InvoiceNo });
                        if (detailData.ToList().Count > 0)
                        {
                            foreach (var itemDetail in detailData)
                            {
                                var headerData = purchasingDbContext.GarmentInternNotes.Where(w => w.Id == itemDetail.GarmentINId && w.SupplierId == supplier.Id && w.IsDeleted == false).Select(s => new { s.INNo });
                                if (headerData.ToList().Count > 0)
                                {
                                    foreach (var itemHeader in headerData)
                                    {
                                        itemErrorCount++;
                                        itemError += "garmentInvoice: 'invoiceNo " + item.garmentInvoice.invoiceNo + " already existed on Intern Note No " + itemHeader.INNo.ToString() + "', ";
                                    }
                                }
                            }
                        }

                        var invoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id);
                        if (prevUseIncomeTax != null && prevUseIncomeTax != invoice.UseIncomeTax)
                        {
                            itemErrorCount++;
                            itemError += "useincometax: 'UseIncomeTax harus sama', ";
                        }
                        prevUseIncomeTax = invoice.UseIncomeTax;
                        if (prevUseVat != null && prevUseVat != invoice.UseVat)
                        {
                            itemErrorCount++;
                            itemError += "usevat: 'UseVat harus sama', ";
                        }
                        prevUseVat = invoice.UseVat;
                        if (IncomeTaxId != null && IncomeTaxId != invoice.IncomeTaxId)
                        {
                            itemErrorCount++;
                            itemError += "incometax: 'Income Tax Harus Sama', ";
                        }
                        IncomeTaxId = invoice.IncomeTaxId;
                        if (item.details == null || item.details.Count.Equals(0))
                        {
                            itemErrorCount++;
                            itemError += "detailscount: 'Details is required', ";
                        }
                        else
                        {
                            string detailError = "[";

                            foreach (var detail in item.details)
                            {
                                detailError += "{";
                                var deliveryOrder = doFacade.ReadById((int)detail.deliveryOrder.Id);
                                var invitem       = invoice.Items.First(s => s.InvoiceId == item.garmentInvoice.Id);

                                if (invitem != null)
                                {
                                    if (paymentMethod != "" && paymentMethod != invitem.PaymentMethod)
                                    {
                                        detailErrorCount++;
                                        detailError += "paymentMethod: 'TermOfPayment Harus Sama', ";
                                    }
                                    paymentMethod = deliveryOrder.PaymentMethod;
                                }

                                detailError += "}, ";
                            }

                            detailError += "]";

                            if (detailErrorCount > 0)
                            {
                                itemErrorCount++;
                                itemError += $"details: {detailError}, ";
                            }
                        }
                    }


                    itemError += "}, ";
                }

                itemError += "]";

                if (itemErrorCount > 0)
                {
                    yield return(new ValidationResult(itemError, new List <string> {
                        "items"
                    }));
                }
            }
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            IGarmentInvoice             invoiceFacade = validationContext == null ? null : (IGarmentInvoice)validationContext.GetService(typeof(IGarmentInvoice));
            IGarmentDeliveryOrderFacade doFacade      = validationContext == null ? null : (IGarmentDeliveryOrderFacade)validationContext.GetService(typeof(IGarmentDeliveryOrderFacade));

            if (currency == null)
            {
                yield return(new ValidationResult("currency is required", new List <string> {
                    "currency"
                }));
            }
            if (supplier == null)
            {
                yield return(new ValidationResult("Supplier is required", new List <string> {
                    "supplier"
                }));
            }

            int itemErrorCount   = 0;
            int detailErrorCount = 0;

            if (this.items == null || items.Count <= 0)
            {
                yield return(new ValidationResult("Item is required", new List <string> {
                    "itemscount"
                }));
            }
            else
            {
                string itemError        = "[";
                bool?  prevUseIncomeTax = null;
                bool?  prevUseVat       = null;
                string paymentMethod    = "";

                foreach (var item in items)
                {
                    itemError += "{";

                    if (item.garmentInvoice == null || item.garmentInvoice.Id == 0)
                    {
                        itemErrorCount++;
                        itemError += "garmentInvoice: 'No Garment Invoice selected', ";
                    }
                    else
                    {
                        var invoice = invoiceFacade.ReadById((int)item.garmentInvoice.Id);
                        if (prevUseIncomeTax != null && prevUseIncomeTax != invoice.UseIncomeTax)
                        {
                            itemErrorCount++;
                            itemError += "useincometax: 'UseIncomeTax harus sama', ";
                        }
                        prevUseIncomeTax = invoice.UseIncomeTax;
                        if (prevUseVat != null && prevUseVat != invoice.UseVat)
                        {
                            itemErrorCount++;
                            itemError += "usevat: 'UseVat harus sama', ";
                        }
                        prevUseVat = invoice.UseVat;
                        if (item.details == null || item.details.Count.Equals(0))
                        {
                            itemErrorCount++;
                            itemError += "detailscount: 'Details is required', ";
                        }
                        else
                        {
                            string detailError = "[";

                            foreach (var detail in item.details)
                            {
                                detailError += "{";
                                var deliveryOrder = doFacade.ReadById((int)detail.deliveryOrder.Id);
                                if (deliveryOrder != null)
                                {
                                    if (paymentMethod != "" && paymentMethod != deliveryOrder.PaymentMethod)
                                    {
                                        detailErrorCount++;
                                        detailError += "paymentMethod: 'TermOfPayment Harus Sama', ";
                                    }
                                    paymentMethod = deliveryOrder.PaymentMethod;
                                }

                                detailError += "}, ";
                            }

                            detailError += "]";

                            if (detailErrorCount > 0)
                            {
                                itemErrorCount++;
                                itemError += $"details: {detailError}, ";
                            }
                        }
                    }


                    itemError += "}, ";
                }

                itemError += "]";

                if (itemErrorCount > 0)
                {
                    yield return(new ValidationResult(itemError, new List <string> {
                        "items"
                    }));
                }
            }
        }
        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));
            }
        }