private void singleChoiceActionPolz_Execute(object sender, DevExpress.ExpressApp.Actions.SingleChoiceActionExecuteEventArgs e) { XPObjectSpace objectSpace = (XPObjectSpace)View.ObjectSpace; int mes = Convert.ToInt32((e.SelectedChoiceActionItem.Data)); int ano = mes == 12 && DateTime.Today.Month == 1 ? DateTime.Today.Year - 1 : DateTime.Today.Year; DateTime mFechaIni = apl.Log.Fecha.FechaInicial(mes, ano); DateTime mFechaFin = apl.Log.Fecha.FechaFinal(mes, ano); CriteriaOperator[] operands = new CriteriaOperator[2]; XmlDocument docXml = new XmlDocument(); Ventas vta = objectSpace.FindObject <Ventas>(null); operands[0] = GroupOperator.And(new BinaryOperator("FechaDoc", mFechaIni, BinaryOperatorType.GreaterOrEqual), new BinaryOperator("FechaDoc", mFechaFin, BinaryOperatorType.LessOrEqual)); operands[1] = new BinaryOperator("Status", DocumentoStatus.Cancelado, BinaryOperatorType.NotEqual); SortProperty [] sortCollection = new SortProperty[1]; sortCollection[0] = new SortProperty("FechaDoc", SortingDirection.Ascending); IList arr = objectSpace.CreateCollection(typeof(DocumentoSalida), new GroupOperator(operands), sortCollection); if (arr.Count > 0) { string filename = string.Format("{0}.POL", mFechaIni.Month); using (new apl.Log.CWaitCursor()) { XmlDeclaration declaracion = docXml.CreateXmlDeclaration("1.0", null, "yes"); docXml.InsertBefore(declaracion, docXml.DocumentElement); // docXml.LoadXml("<?xml version=\"1.0\" standalone=\"yes\"?>"); XmlElement data = docXml.CreateElement("DATAPACKET"); data.SetAttribute("Version", "2.0"); docXml.AppendChild(data); XmlElement meta = docXml.CreateElement("METADATA"); data.AppendChild(meta); XmlElement fields = docXml.CreateElement("FIELDS"); meta.AppendChild(fields); XmlElement field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "VersionCOI"); field.SetAttribute("fieldtype", "i2"); fields.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "TipoPoliz"); field.SetAttribute("fieldtype", "string"); field.SetAttribute("WIDTH", "2"); fields.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "DiaPoliz"); field.SetAttribute("fieldtype", "string"); field.SetAttribute("WIDTH", "2"); fields.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "ConcepPoliz"); field.SetAttribute("fieldtype", "string"); field.SetAttribute("WIDTH", "120"); fields.AppendChild(field); XmlElement fieldP = docXml.CreateElement("FIELD"); fieldP.SetAttribute("attrname", "Partidas"); fieldP.SetAttribute("fieldtype", "nested"); fields.AppendChild(fieldP); XmlElement fields2 = docXml.CreateElement("FIELDS"); fieldP.AppendChild(fields2); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "Cuenta"); field.SetAttribute("fieldtype", "string"); field.SetAttribute("WIDTH", "21"); fields2.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "Depto"); field.SetAttribute("fieldtype", "i4"); fields2.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "ConceptoPol"); field.SetAttribute("fieldtype", "string"); field.SetAttribute("WIDTH", "120"); fields2.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "Monto"); field.SetAttribute("fieldtype", "r8"); fields2.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "TipoCambio"); field.SetAttribute("fieldtype", "r8"); fields2.AppendChild(field); field = docXml.CreateElement("FIELD"); field.SetAttribute("attrname", "DebeHaber"); field.SetAttribute("fieldtype", "string"); field.SetAttribute("WIDTH", "1"); fields2.AppendChild(field); XmlElement parm = docXml.CreateElement("PARAMS"); fieldP.AppendChild(parm); XmlElement parm1 = docXml.CreateElement("PARAMS"); meta.AppendChild(parm1); XmlElement rowd = docXml.CreateElement("ROWDATA"); data.AppendChild(rowd); XmlElement row = docXml.CreateElement("ROW"); row.SetAttribute("VersionCOI", "50"); row.SetAttribute("TipoPoliz", "Dr"); row.SetAttribute("DiaPoliz", string.Format("{0}", arr.Count + 1)); row.SetAttribute("ConcepPoliz", string.Format("RELACION DE FACTURAS DE {0} {1}", mFechaIni.ToString("MMMM").ToUpper(), mFechaIni.ToString("yyyy"))); rowd.AppendChild(row); XmlElement par = docXml.CreateElement("Partidas"); row.AppendChild(par); decimal tot = 0; string[] nivs; string aux = string.Empty; foreach (DocumentoSalida doc in arr) { XmlElement part = docXml.CreateElement("ROWPartidas"); nivs = string.IsNullOrEmpty(doc.Cliente.Cuenta) ? null : doc.Cliente.Cuenta.Split('-'); if (nivs != null) { aux = string.Concat(nivs); } part.SetAttribute("Cuenta", string.Format("{0}2", aux.PadRight(20, '0'))); part.SetAttribute("Depto", "0"); aux = string.Format("F-{0} {1}", doc.Clave.Trim(), ((PartidaSalida)(doc.VentaItems[0])).Descripcion); part.SetAttribute("ConceptoPol", aux.Length > 120 ? aux.Substring(0, 119) : aux); part.SetAttribute("Monto", doc.Total.ToString("F2")); part.SetAttribute("TipoCambio", "1"); part.SetAttribute("DebeHaber", "D"); par.AppendChild(part); tot += doc.Total; } XmlElement parth = docXml.CreateElement("ROWPartidas"); nivs = string.IsNullOrEmpty(vta.Cuenta) ? null : vta.Cuenta.Split('-'); if (nivs != null) { aux = string.Concat(nivs); } parth.SetAttribute("Cuenta", string.Format("{0}2", aux.PadRight(20, '0'))); parth.SetAttribute("Depto", "0"); parth.SetAttribute("ConceptoPol", string.Format("RELACION DE FACTURAS DE {0} {1}", mFechaIni.ToString("MMMM").ToUpper(), mFechaIni.ToString("yyyy"))); parth.SetAttribute("Monto", tot.ToString("F2")); parth.SetAttribute("TipoCambio", "1"); parth.SetAttribute("DebeHaber", "H"); par.AppendChild(parth); docXml.Save(filename); } } }