public static void DeserializarLr(out FeaEntidades.InterFacturas.lote_response Lr, string Cadena) { //Deserializar ( pasar de string XML a eFact_RN.IBK.lote_response ) System.Text.Encoding codificador; codificador = System.Text.Encoding.GetEncoding("iso-8859-1"); byte[] a = new byte[Cadena.Length]; a = codificador.GetBytes(Cadena); MemoryStream ms = new MemoryStream(a); ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.lote_response lr = new FeaEntidades.InterFacturas.lote_response(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lr.GetType()); lr = (FeaEntidades.InterFacturas.lote_response)x.Deserialize(ms); ms.Close(); ms = null; Lr = lr; }
private void ActualizarDB2(List<eFact_Entidades.Lote> lotes) { foreach (eFact_Entidades.Lote lote in lotes) { string fecha = DateTime.Now.ToString("yyyyMMdd"); string hora = DateTime.Now.ToString("HHmmss"); OleDbCommand myCommand; OleDbConnection cn; string myInsertQueryOK; string myInsertQueryER; eFact_Entidades.Novedades novedad = new eFact_Entidades.Novedades(); novedad.CuitVendedor = lote.CuitVendedor; novedad.IdLote = lote.IdLote; novedad.NumeroEnvio = lote.NumeroEnvio; novedad.PuntoVenta = lote.PuntoVenta; novedad.IdLog = lote.WF.Log[lote.WF.Log.Count - 1].IdLog; novedad.IdOp = lote.IdOp; novedad.NumeroLote = lote.NumeroLote; novedad.IdEstado = lote.IdEstado; novedad.Comentario = lote.WF.Log[lote.WF.Log.Count - 1].Comentario; novedad.FechaAlta = DateTime.Now; novedad.CantidadRegistros = lote.Comprobantes.Count; eFact_RN.Lote.GuardarNovedades(novedad, Aplicacion.Sesion); string errorSoloXMail = ""; if (lote.WF.IdEstado == "AceptadoAFIP" || lote.WF.IdEstado == "AceptadoAFIPO" || lote.WF.IdEstado == "AceptadoAFIPP") { cn = new OleDbConnection(Aplicacion.Sesion.CnnStrAplicExterna); cn.Open(); //Aceptados por AFIP foreach (eFact_Entidades.Comprobante c in lote.Comprobantes) { //Grabar CAEs if (c.EstadoIFoAFIP == "A") { // Tabla: "BECCL" - Comprobante OK myInsertQueryOK = "insert into BECCL (BCCID, BCCCOM, BCCIDL, BCCTCO, BCCCLA, "; myInsertQueryOK += "BCCTCA, BCCSUC, BCCNED, BCCCAE, BCCFVC, BCCFOC, BCCFPR, BCCHPR) "; myInsertQueryOK += "values ('BC', 0, " + lote.NumeroLote + ", '', '', "; myInsertQueryOK += "'" + c.IdTipoComprobante + "', '" + lote.PuntoVenta + "', '" + c.NumeroComprobante + "', '" + c.NumeroCAE + "', '" + c.FechaVtoCAE.ToString("yyyyMMdd") + "', '" + c.FechaCAE.ToString("yyyyMMdd") + "', '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryOK); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); // -------------------------------- } else { // Tabla: "BECCL" - Comprobante ER myInsertQueryER = "insert into BEEIL (BEIID, BEICOM, BEIIDL, BEITCO, BEICLA, BEITCA, BEISUC, BEINED, BEICOE, "; //Descripcion del 1 a 30 / del 31 a 60 / 61 a 90 / 91 a 120 / 121 a 150 myInsertQueryER += "BEIDE1, BEIDE2, BEIDE3, BEIDE4, BEIDE5, "; myInsertQueryER += "BEIFPR, BEIHPR) "; myInsertQueryER += "values ('BI', '0', '" + lote.NumeroLote + "', '', '', "; string codigoError = "99"; if (c.EstadoIFoAFIP != null && c.EstadoIFoAFIP != "") { codigoError = c.EstadoIFoAFIP; } myInsertQueryER += "'" + c.IdTipoComprobante + "', '" + lote.PuntoVenta + "', '" + c.NumeroComprobante + "', '" + codigoError + "'"; myInsertQueryER += Comentarios(c.ComentarioIFoAFIP); myInsertQueryER += ", '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); // -------------------------------- } } // Tabla: "BELLL" - Log //LOG indicando OK myInsertQueryER = "insert into BELLL (BLLID, BLLIDL, BLLCOD, BLLFPR, BLLHPR) "; myInsertQueryER += "values ('BL', '" + lote.NumeroLote + "', 'OK', '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); //LOG indicando ERROR if (lote.WF.IdEstado == "AceptadoAFIPP") { myInsertQueryER = "insert into BELLL (BLLID, BLLIDL, BLLCOD, BLLFPR, BLLHPR) "; myInsertQueryER += "values ('BL', '" + lote.NumeroLote + "', 'ER', '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); } // -------------------------------- cn.Close(); } else { cn = new OleDbConnection(Aplicacion.Sesion.CnnStrAplicExterna); cn.Open(); // Rechazados por IF o AFIP if (lote.WF.Log[lote.WF.Log.Count - 1].Comentario.Contains("Punto de Venta: [") && lote.WF.Log[lote.WF.Log.Count - 1].Comentario.Contains(" Comprobante: [")) { // Grabar errores a nivel de comprobante foreach (eFact_Entidades.Comprobante c in lote.Comprobantes) { if (c.ComentarioIFoAFIP != null && c.ComentarioIFoAFIP != "" && c.ComentarioIFoAFIP.Substring(0, 2) == "<?") { try { // Deserializar ( pasar de string XML a FeaEntidades.InterFacturas.lote_comprobantes ) System.Text.Encoding codificador; codificador = System.Text.Encoding.GetEncoding("iso-8859-1"); byte[] a = new byte[c.ComentarioIFoAFIP.Length]; a = codificador.GetBytes(c.ComentarioIFoAFIP); MemoryStream ms = new MemoryStream(a); ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.comprobante_response cr = new FeaEntidades.InterFacturas.comprobante_response(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(cr.GetType()); cr = (FeaEntidades.InterFacturas.comprobante_response)x.Deserialize(ms); foreach (FeaEntidades.InterFacturas.error ce in cr.errores_comprobante) { // Tabla: "BECCL" - Comprobante ER myInsertQueryER = "insert into BEEIL (BEIID, BEICOM, BEIIDL, BEITCO, BEICLA, BEITCA, BEISUC, BEINED, BEICOE, "; //Descripcion del 1 a 30 / del 31 a 60 / 61 a 90 / 91 a 120 / 121 a 150 myInsertQueryER += "BEIDE1, BEIDE2, BEIDE3, BEIDE4, BEIDE5, "; myInsertQueryER += "BEIFPR, BEIHPR) "; myInsertQueryER += "values ('BI', '0', '" + lote.NumeroLote + "', '', '', "; myInsertQueryER += "'" + c.IdTipoComprobante + "', '" + lote.PuntoVenta + "', '" + c.NumeroComprobante + "', '" + ce.codigo_error + "'"; myInsertQueryER += Comentarios(ce.descripcion_error); myInsertQueryER += ", '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); // -------------------------------- } } catch { // Tabla: "BECCL" - Comprobante ER myInsertQueryER = "insert into BEEIL (BEIID, BEICOM, BEIIDL, BEITCO, BEICLA, BEITCA, BEISUC, BEINED, BEICOE, "; //Descripcion del 1 a 30 / del 31 a 60 / 61 a 90 / 91 a 120 / 121 a 150 myInsertQueryER += "BEIDE1, BEIDE2, BEIDE3, BEIDE4, BEIDE5, "; myInsertQueryER += "BEIFPR, BEIHPR) "; myInsertQueryER += "values ('BI', '0', '" + lote.NumeroLote + "', '', '', "; myInsertQueryER += "'" + c.IdTipoComprobante + "', '" + lote.PuntoVenta + "', '" + c.NumeroComprobante + "', '99'"; myInsertQueryER += Comentarios(c.ComentarioIFoAFIP); myInsertQueryER += ", '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); // -------------------------------- } } else { // Tabla: "BECCL" - Comprobante ER myInsertQueryER = "insert into BEEIL (BEIID, BEICOM, BEIIDL, BEITCO, BEICLA, BEITCA, BEISUC, BEINED, BEICOE, "; //Descripcion del 1 a 30 / del 31 a 60 / 61 a 90 / 91 a 120 / 121 a 150 myInsertQueryER += "BEIDE1, BEIDE2, BEIDE3, BEIDE4, BEIDE5, "; myInsertQueryER += "BEIFPR, BEIHPR) "; myInsertQueryER += "values ('BI', '0', '" + lote.NumeroLote + "', '', '', "; myInsertQueryER += "'" + c.IdTipoComprobante + "', '" + lote.PuntoVenta + "', '" + c.NumeroComprobante + "', '99'"; myInsertQueryER += Comentarios(c.ComentarioIFoAFIP); myInsertQueryER += ", '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); // -------------------------------- } } } else { // Grabar errores a nivel de lote cn = new OleDbConnection(Aplicacion.Sesion.CnnStrAplicExterna); cn.Open(); try { // Deserializar ( pasar de string XML a FeaEntidades.InterFacturas.lote_comprobantes ) System.Text.Encoding codificador; codificador = System.Text.Encoding.GetEncoding("iso-8859-1"); byte[] a = new byte[lote.LoteXmlIF.Length]; a = codificador.GetBytes(lote.LoteXmlIF); MemoryStream ms = new MemoryStream(a); ms.Seek(0, System.IO.SeekOrigin.Begin); FeaEntidades.InterFacturas.lote_response lr = new FeaEntidades.InterFacturas.lote_response(); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lr.GetType()); lr = (FeaEntidades.InterFacturas.lote_response)x.Deserialize(ms); foreach (FeaEntidades.InterFacturas.error le in lr.errores_lote) { //if (le.codigo_error == 500 || le.codigo_error == 600) //{ // errorSoloXMail = lote.LoteXmlIF; // break; //} // Tabla: "BECCL" - Comprobante ER myInsertQueryER = "insert into BEEIL (BEIID, BEICOM, BEIIDL, BEITCO, BEICLA, BEITCA, BEISUC, BEINED, BEICOE, "; // Descripcion del 1 a 30 / del 31 a 60 / 61 a 90 / 91 a 120 / 121 a 150 myInsertQueryER += "BEIDE1, BEIDE2, BEIDE3, BEIDE4, BEIDE5, "; myInsertQueryER += "BEIFPR, BEIHPR) "; myInsertQueryER += "values ('BI', '0', '" + lote.NumeroLote + "', '', '', "; myInsertQueryER += "'0', '" + lote.PuntoVenta + "', '0', '" + le.codigo_error + "'"; myInsertQueryER += Comentarios(le.descripcion_error); myInsertQueryER += ", '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); } } catch { // Tabla: "BECCL" - Comprobante ER myInsertQueryER = "insert into BEEIL (BEIID, BEICOM, BEIIDL, BEITCO, BEICLA, BEITCA, BEISUC, BEINED, BEICOE, "; // Descripcion del 1 a 30 / del 31 a 60 / 61 a 90 / 91 a 120 / 121 a 150 myInsertQueryER += "BEIDE1, BEIDE2, BEIDE3, BEIDE4, BEIDE5, "; myInsertQueryER += "BEIFPR, BEIHPR) "; myInsertQueryER += "values ('BI', '0', '" + lote.NumeroLote + "', '', '', "; myInsertQueryER += "'0', '" + lote.PuntoVenta + "', '0', '99'"; myInsertQueryER += Comentarios(lote.WF.Log[lote.WF.Log.Count - 1].Comentario); myInsertQueryER += ", '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); } // -------------------------------- } if (errorSoloXMail != "") { Exception exSoloXMail = new Exception(errorSoloXMail); Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(exSoloXMail); } else { // Tabla: "BELLL" - Log myInsertQueryER = "insert into BELLL (BLLID, BLLIDL, BLLCOD, BLLFPR, BLLHPR) "; myInsertQueryER += "values ('BL', '" + lote.NumeroLote + "', 'ER', '" + fecha + "', '" + hora + "') "; myCommand = new OleDbCommand(myInsertQueryER); myCommand.Connection = cn; myCommand.ExecuteNonQuery(); // -------------------------------- cn.Close(); } } } }