예제 #1
0
        private ReportHeaderFormat ProcessHeaderAndDetailsForHAZMAT(Document document)
        {

            ReportHeaderFormat header = ProcessHeader(document);


            #region Map Details for each document Line
            // 
            //ReportDetailFormat detail;
            IList<ReportDetailFormat> detailList = new List<ReportDetailFormat>();
            ReportDetailFormat detail;

            //TODO: Incluir Filtro por bodega zona en este punto para solo obtener los detalles del filtro
            int sequence = 1;

            IList<DocumentLine> hazmatLines = Factory.DaoDocumentLine()
                .Select(new DocumentLine { Document = new Document { DocID = document.DocID } });

            bool isHazmat = false;
            foreach (DocumentLine line in hazmatLines)
                if (line.Product.ProductTrack.Any(f => f.TrackOption.Name == "HAZMAT"))
                {
                    isHazmat = true;
                    line.Note = "HAZMAT";
                }
                

            if (!isHazmat)   //SI NO ES HAZMAT SALE
                return null;

            int qtyOrder;
            foreach (Product product in hazmatLines.Where(f=>f.Note=="HAZMAT").Select(f=>f.Product).Distinct())
            {
                detail = new ReportDetailFormat();

                detail.SeqLine = sequence++;
                detail.ProductDescription = string.IsNullOrEmpty(product.Comment) ? "NO HAZMAT COMMENT, PLEASE GO TO PRODUCT CARD" : product.Comment;
                detail.ProductDescription = product.Name + "\n" + detail.ProductDescription;
                detail.ProductCode = product.ProductCode;
                

                qtyOrder = (int)hazmatLines.Where(f=>f.Product.ProductID == product.ProductID).Sum(f=>f.Quantity);
                detail.QtyOrder = (product.UnitsPerPack > 0) ? qtyOrder / product.UnitsPerPack : qtyOrder;

                //Peso por caja
                detail.PackWeight  = product.Weight * detail.QtyOrder;

                // CAA [2010/05/07]
                // Se agrega el campo de peso (individual)
                detail.Weight = product.Weight;

                if (detail.ProductDescription.Contains("Not Regulated"))
                    detail.Notes = "";
                else
                    detail.Notes = "XX";

                detailList.Add(detail);

                header.TotalCases += detail.QtyOrder;
                header.TotalWeight += detail.PackWeight;

            }

            #endregion


            header.ReportDetails = detailList.ToList();
            return header;

        }