public static bool AdendaMetalsa(string sNombreDB, int NumeroRegistro, int Tipo, int NumeroEmpresa, string sNombreArchivo, ref string xml) { //CfdiBLL ctrl = new CfdiBLL(); //HP objHP = new HP(); METALSA objMetal = new METALSA(); try { DataTable dt = new DataTable(); SQLConection context = new SQLConection(); context.Parametros.Clear(); context.Parametros.Add(new SqlParameter("@Numero_Empresa", NumeroEmpresa)); context.Parametros.Add(new SqlParameter("@Numero_Factura", NumeroRegistro)); dt = context.ExecuteProcedure("[" + sNombreDB + "].[dbo].[sp_AdendaMetalda_Encabezado]", true).Copy(); objMetal.factura_fecha = DateTime.Parse(dt.Rows[0][0].ToString()); objMetal.factura_version = dt.Rows[0][1].ToString(); objMetal.factura_folioFiscal = dt.Rows[0][2].ToString(); objMetal.factura_tipoDocumentoFiscal = dt.Rows[0][3].ToString(); objMetal.factura_tipoDocumento = dt.Rows[0][4].ToString(); objMetal.moneda_tipoMoneda = dt.Rows[0][6].ToString(); objMetal.proveedor_nombre = dt.Rows[0][7].ToString(); objMetal.proveedor_codigo = dt.Rows[0][8].ToString(); objMetal.destino_nombre = dt.Rows[0][9].ToString(); objMetal.destino_codigo = dt.Rows[0][10].ToString(); objMetal.archivo_tipoArchivo = dt.Rows[0][11].ToString(); //objMetal.archivo_archivo = Base64Encode(sNombreArchivo); objMetal.archivo_archivo = Base64Encode(Path.GetFileNameWithoutExtension(sNombreArchivo)); objMetal.cuentaCorreo_cuentaCorreo = dt.Rows[0][12].ToString(); return lfCreaAdendaMETALSA(sNombreDB, objMetal, ref xml, NumeroEmpresa, NumeroRegistro); } catch (Exception ex) { Console.WriteLine(ex.Message); return false; } }
private static string lfConsultaPartidasAdenda(string sNombreDB, int iNumeroEmpresa, int iNumeroFactura, XNamespace xMPNP) { string sResultado = string.Empty; string sResultadoEncode = string.Empty; DataTable dt = new DataTable(); SQLConection context = new SQLConection(); try { switch (sNombreDB.ToUpper()) { case "INTEGRA_ZAMBRANO_GASERA": context.Parametros.Clear(); context.Parametros.Add(new SqlParameter("@Numero_Empresa ", iNumeroEmpresa)); context.Parametros.Add(new SqlParameter("@Numero_Factura", iNumeroFactura)); dt = context.ExecuteProcedure("[" + sNombreDB + "].[dbo].[sp_AdendaMetalda_Partidas_Gasera]", true).Copy(); break; case "INTEGRA_ZAMBRANO_DIST": context.Parametros.Add(new SqlParameter("@Numero_Empresa ", iNumeroEmpresa)); context.Parametros.Add(new SqlParameter("@Numero_Factura", iNumeroFactura)); dt = context.ExecuteProcedure("[" + sNombreDB + "].[dbo].[sp_AdendaMetalda_Partidas_Distribuidora]", true).Copy(); break; case "INTEGRA_ZAMBRANO": context.Parametros.Add(new SqlParameter("@Numero_Empresa ", iNumeroEmpresa)); context.Parametros.Add(new SqlParameter("@Numero_Factura", iNumeroFactura)); dt = context.ExecuteProcedure("[" + sNombreDB + "].[dbo].[sp_AdendaMetalda_Partidas_Estaciones]", true).Copy(); break; default: context.Parametros.Add(new SqlParameter("@Numero_Empresa ", iNumeroEmpresa)); context.Parametros.Add(new SqlParameter("@Numero_Factura", iNumeroFactura)); dt = context.ExecuteProcedure("[" + sNombreDB + "].[dbo].[sp_AdendaMetalda_Partidas_General]", true).Copy(); break; } int iLinea = 1; foreach (DataRow item in dt.Rows) { METALSA objMetal = new METALSA(); objMetal.part_descripcion = item[0].ToString(); objMetal.part_cantidad = item[1].ToString(); objMetal.part_ordencompra = item[2].ToString(); objMetal.part_numeroRecibo = item[3].ToString(); objMetal.part_fechaRecibo = DateTime.Parse(item[4].ToString()); objMetal.part_precioUnitario = item[5].ToString(); objMetal.part_unidadMedida = item[6].ToString(); objMetal.part_numeroLinea = iLinea++.ToString(); objMetal.part_numeroParte = item[8].ToString(); //XElement xePart = new XElement(xMPNP + "part", new XAttribute(XNamespace.Xmlns + "", xMPNP) XElement xePart = new XElement(xMPNP + "part", new XAttribute(XNamespace.Xmlns + "MPNP", xMPNP) //XElement xePart = new XElement(xMPNP + "part", new XAttribute("descripcion", objMetal.part_descripcion) , new XAttribute("descripcion", objMetal.part_descripcion) , new XAttribute("cantidad", objMetal.part_cantidad) , new XAttribute("ordencompra", objMetal.part_ordencompra) , new XAttribute("numeroRecibo", objMetal.part_numeroRecibo) , new XAttribute("fechaRecibo", objMetal.part_fechaRecibo.ToString("yyyy-MM-dd")) , new XAttribute("precioUnitario", objMetal.part_precioUnitario) , new XAttribute("unidadMedida", objMetal.part_unidadMedida) , new XAttribute("numeroLinea", objMetal.part_numeroLinea) , new XAttribute("numeroParte", objMetal.part_numeroParte)); sResultado += @xePart.ToString(); } sResultado = sResultado.Replace("xmlns:MPNP=\"http://www.metalsa.com.mx/Addenda/MPNP\"", string.Empty); return sResultado; } catch (Exception ex) { Console.WriteLine(ex.Message); return sResultado; } }
private static bool lfCreaAdendaMETALSA(string sNombreDB, METALSA objMetal, ref string sBody_XML, int iNumeroEmpresa, int iNumeroFactura) { XDocument xd = XDocument.Parse(sBody_XML); XNamespace xcfdi = @"http://www.sat.gob.mx/cfd/3"; XNamespace xMPNP = @"http://www.metalsa.com.mx/Addenda/MPNP"; try { // Construcción de adenda XElement xeAdenda = new XElement(xcfdi + "Addenda", new XElement(xMPNP + "factura", new XAttribute(XNamespace.Xmlns + "MPNP", xMPNP), new XAttribute("fecha", objMetal.factura_fecha.ToString("yyyy-MM-dd")), new XAttribute("version", objMetal.factura_version), new XAttribute("folioFiscal", objMetal.factura_folioFiscal), new XAttribute("tipoDocumentoFiscal", objMetal.factura_tipoDocumentoFiscal), new XAttribute("tipoDocumento", objMetal.factura_tipoDocumento), new XElement(xMPNP + "moneda", new XAttribute("tipoMoneda", objMetal.moneda_tipoMoneda)), new XElement(xMPNP + "proveedor", new XAttribute("nombre", objMetal.proveedor_nombre), new XAttribute("codigo", objMetal.proveedor_codigo)), new XElement(xMPNP + "destino", new XAttribute("nombre", objMetal.destino_nombre), new XAttribute("codigo", objMetal.destino_codigo)), new XElement(xMPNP + "archivo", new XAttribute("tipoArchivo", objMetal.archivo_tipoArchivo), new XAttribute("archivo", objMetal.archivo_archivo)), new XElement(xMPNP + "cuentaCorreo", new XAttribute("cuentaCorreo", objMetal.cuentaCorreo_cuentaCorreo)), new XElement(xMPNP + "partes", lfConsultaPartidasAdenda(sNombreDB, iNumeroEmpresa, iNumeroFactura, xMPNP)))); xd.Root.Add(xeAdenda); sBody_XML = xd.ToString(); sBody_XML = sBody_XML.Replace("<", "<"); sBody_XML = sBody_XML.Replace(">", ">"); return true; } catch { return false; } }