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; }