public IHttpActionResult PrintPI(int id, string reportName)
        {
            Library.DTO.Notification notification;

            // authentication
            Module.Framework.BLL fwBll = new Module.Framework.BLL();
            if (!fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanPrint))
            {
                return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
            }

            //GET DATA
            BLL.SaleOrderMng bll = new BLL.SaleOrderMng();
            DTO.SaleOrderMng.PIContainerPrintout dtoPrintout = bll.GetPrintoutData(id, ControllerContext.GetAuthUserId(), out notification);

            //CREATE PRINTOUT
            if (reportName == null)
            {
                reportName = dtoPrintout.ReportName;
            }

            //int? companyID = fwBll.GetCompanyID(ControllerContext.GetAuthUserId());
            //switch (companyID)
            //{
            //    case 13:
            //        reportName = reportName + "_OrangePine.rdlc";
            //        break;
            //    default:
            //        reportName = reportName + ".rdlc";
            //        break;
            //}
            reportName = reportName + ".rdlc";
            Microsoft.Reporting.WebForms.LocalReport lr = new Microsoft.Reporting.WebForms.LocalReport();
            lr.ReportPath = FrameworkSetting.Setting.AbsoluteReportFolder + reportName;

            Microsoft.Reporting.WebForms.ReportDataSource rsInvoice = new Microsoft.Reporting.WebForms.ReportDataSource();
            rsInvoice.Name  = "Order";
            rsInvoice.Value = dtoPrintout.PIPrintouts;
            lr.DataSources.Add(rsInvoice);

            Microsoft.Reporting.WebForms.ReportDataSource rsInvoiceDetail = new Microsoft.Reporting.WebForms.ReportDataSource();
            rsInvoiceDetail.Name  = "OrderDetail";
            rsInvoiceDetail.Value = dtoPrintout.PIDetailPrintouts;
            lr.DataSources.Add(rsInvoiceDetail);

            string printoutFileName = PrintoutHelper.BuildPrintoutFile(lr, "PDF");

            //
            // author: TheMy
            // description: add disclaimer (using iTextSharp)
            //
            string   finalFile = System.Guid.NewGuid().ToString().Replace("-", "") + ".pdf";
            FileInfo fInfo     = new FileInfo(FrameworkSetting.Setting.AbsoluteReportFolder + reportName);

            if (File.Exists(FrameworkSetting.Setting.AbsoluteReportFolder + fInfo.Name.Replace(fInfo.Extension, "") + "_bottom.pdf"))
            {
                try
                {
                    Document document = new Document();
                    PdfCopy  writer   = new PdfCopy(document, new FileStream(FrameworkSetting.Setting.AbsoluteReportTmpFolder + finalFile, FileMode.Create));
                    if (writer == null)
                    {
                        throw new Exception("Can not create Pdf object");
                    }
                    document.Open();
                    writer.AddDocument(new PdfReader(FrameworkSetting.Setting.AbsoluteReportTmpFolder + printoutFileName));
                    writer.AddDocument(new PdfReader(FrameworkSetting.Setting.AbsoluteReportFolder + fInfo.Name.Replace(fInfo.Extension, "") + "_bottom.pdf"));
                    writer.Close();
                    document.Close();
                }
                catch (Exception ex)
                {
                    notification.Type    = Library.DTO.NotificationType.Error;
                    notification.Message = "Adding general condition failed: " + ex.Message;
                    finalFile            = printoutFileName;
                }
            }
            else
            {
                finalFile = printoutFileName;
            }
            //
            //
            //

            return(Ok(new Library.DTO.ReturnData <string>()
            {
                Data = finalFile, Message = notification
            }));
        }
예제 #2
0
        public DTO.SaleOrderMng.PIContainerPrintout DB2DTO_Printout(SaleOrder_ReportView dbItem)
        {
            DTO.SaleOrderMng.PIContainerPrintout dtoItem = new DTO.SaleOrderMng.PIContainerPrintout();
            dtoItem.PIPrintouts       = new List <DTO.SaleOrderMng.PIPrintout>();
            dtoItem.PIDetailPrintouts = new List <DTO.SaleOrderMng.PIDetailPrintout>();



            DTO.SaleOrderMng.PIPrintout dtoPI = AutoMapper.Mapper.Map <SaleOrder_ReportView, DTO.SaleOrderMng.PIPrintout>(dbItem);
            dtoItem.PIPrintouts.Add(dtoPI);

            //COPY PI DETAIL
            DTO.SaleOrderMng.PIDetailPrintout dtoPIDetail;

            foreach (SaleOrderExtend_ReportView dbExtend in dbItem.SaleOrderExtend_ReportView.Where(o => o.Position == "TOP").OrderBy(o => o.RowIndex))
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.Description = dbExtend.Description;
                dtoPIDetail.SaleAmount  = dbExtend.TotalAmount;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
            }

            foreach (SaleOrderDetail_ReportView dbDetail in dbItem.SaleOrderDetail_ReportView.OrderBy(o => o.RowIndex))
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.RowIndex    = dbDetail.RowIndex;
                dtoPIDetail.ArticleCode = dbDetail.ArticleCode;
                dtoPIDetail.Description = dbDetail.Description;
                dtoPIDetail.OrderQnt    = dbDetail.OrderQnt;
                dtoPIDetail.UnitPrice   = dbDetail.UnitPrice;
                dtoPIDetail.SaleAmount  = dbDetail.SaleAmount;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);

                if (!string.IsNullOrEmpty(dbDetail.ClientArticleCode))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbDetail.ClientArticleCode;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbDetail.ClientArticleName))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbDetail.ClientArticleName;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbDetail.ClientEANCode))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbDetail.ClientEANCode;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbItem.ClientOrderNumber))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbItem.ClientOrderNumber;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbDetail.Reference))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbDetail.Reference;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                foreach (SaleOrderDetailExtend_ReportView dbDetailExt in dbDetail.SaleOrderDetailExtend_ReportView.OrderBy(o => o.RowIndex))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbDetailExt.Description;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }
            }

            foreach (SaleOrderDetailSample_ReportView dbSample in dbItem.SaleOrderDetailSample_ReportView.OrderBy(o => o.RowIndex))
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.RowIndex    = dbSample.RowIndex;
                dtoPIDetail.ArticleCode = dbSample.ArticleCode;
                dtoPIDetail.Description = dbSample.Description;
                dtoPIDetail.OrderQnt    = dbSample.Quantity;
                dtoPIDetail.UnitPrice   = dbSample.SalePrice;
                dtoPIDetail.SaleAmount  = dbSample.SaleAmount;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
            }

            foreach (SaleOrderDetailSparepart_ReportView dbSparepart in dbItem.SaleOrderDetailSparepart_ReportView.OrderBy(o => o.RowIndex))
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.RowIndex    = dbSparepart.RowIndex;
                dtoPIDetail.ArticleCode = dbSparepart.ArticleCode;
                dtoPIDetail.Description = dbSparepart.Description;
                dtoPIDetail.OrderQnt    = dbSparepart.OrderQnt;
                dtoPIDetail.UnitPrice   = dbSparepart.UnitPrice;
                dtoPIDetail.SaleAmount  = dbSparepart.SaleAmount;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);

                if (!string.IsNullOrEmpty(dbSparepart.ClientArticleCode))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbSparepart.ClientArticleCode;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbSparepart.ClientArticleName))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbSparepart.ClientArticleName;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbSparepart.ClientEANCode))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbSparepart.ClientEANCode;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }

                if (!string.IsNullOrEmpty(dbItem.ClientOrderNumber))
                {
                    dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                    dtoPIDetail.Description = dbItem.ClientOrderNumber;
                    dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
                }
            }

            foreach (SaleOrderExtend_ReportView dbExtend in dbItem.SaleOrderExtend_ReportView.Where(o => o.Position == "BOTTOM").OrderBy(o => o.RowIndex))
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.Description = dbExtend.Description;
                dtoPIDetail.SaleAmount  = dbExtend.TotalAmount;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
            }

            if (dbItem.IsViewLDSOnPrintout.HasValue && dbItem.IsViewLDSOnPrintout.Value && dbItem.LDS != "")
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.Description = "LDS: " + dbItem.LDS;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
            }

            if (dbItem.IsViewDeliveryDateOnPrintout.HasValue && dbItem.IsViewDeliveryDateOnPrintout.Value && dbItem.DeliveryDate != "")
            {
                dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
                dtoPIDetail.Description = "DELIVERY DATE: " + dbItem.DeliveryDate;
                dtoItem.PIDetailPrintouts.Add(dtoPIDetail);
            }

            string bottomString = "";

            if (dbItem.IsViewQuantityContOnPrintout.HasValue && dbItem.IsViewQuantityContOnPrintout.Value)
            {
                if (dbItem.Quantity40HC.HasValue)
                {
                    bottomString += dbItem.Quantity40HC.ToString() + "x40'HC CONTAINER";
                }
                if (dbItem.Quantity40DC.HasValue)
                {
                    bottomString += " " + dbItem.Quantity40DC.ToString() + "x40'DC CONTAINER";
                }
                if (dbItem.Quantity20DC.HasValue)
                {
                    bottomString += " " + dbItem.Quantity20DC.ToString() + "x20'DC CONTAINER";
                }
            }

            dtoPIDetail             = new DTO.SaleOrderMng.PIDetailPrintout();
            dtoPIDetail.Description = bottomString;
            dtoItem.PIDetailPrintouts.Add(dtoPIDetail);

            return(dtoItem);
        }