private void procesarDocumentos(string tipo) { int numero = 0; int milisegundos = 2000; string consulta = String.Empty; string formaPago = String.Empty; string adenda = String.Empty; string razonRef = String.Empty; Recordset oRecordSet = null; /* */ string sCondition = ""; string sTop = ""; string sOrder = ""; string sFiltroFecha = " AND CONVERT(date,DocDate) = CONVERT(date,GETDATE()) "; try { if (tipo == "FACTURA") { /* Busco primero todas las facturas de WS */ sTop = ""; sCondition = " AND U_Origen = 'WS' AND U_Estado = '" + PENDIENTE + "' "; sOrder = " ORDER BY DocNum "; consulta = "SELECT " + sTop + " DocEntry," + FPAGOOINV + " AS FormaPAgo," + ADENDA + " AS Adenda" + " FROM " + DocumentoB1.TABLA_FACTURA + " WHERE ObjType = '13' AND DocSubType = '--'" + sFiltroFecha + sCondition + sOrder; oRecordSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset); oRecordSet.DoQuery(consulta); /* Proceso lo que tengo en espera */ while (!oRecordSet.EoF) { numero = oRecordSet.Fields.Item("DocEntry").Value; FacturaB1 doc = new FacturaB1(); doc.ActualizarEstadoDocumento(numero, ENPROCESO, String.Empty); formaPago = oRecordSet.Fields.Item("FormaPago").Value; adenda = oRecordSet.Fields.Item("Adenda").Value; this.enviarFactura(numero, formaPago, adenda); Thread.Sleep(milisegundos); oRecordSet.MoveNext(); } } else if (tipo == "ND") //Nota de Débito { /* Busco primero todas las facturas de WS */ sTop = ""; sCondition = " AND U_Origen = 'WS' AND U_Estado = '" + PENDIENTE + "' "; sOrder = " ORDER BY DocNum "; consulta = "SELECT " + sTop + " DocEntry, " + FPAGOOINV + " AS FormaPago, " + ADENDA + " AS Adenda," + MOTREFND + " AS RazonRef" + " FROM " + DocumentoB1.TABLA_NOTA_DEBITO + " WHERE ObjType = '13' AND DocSubType = 'DN' " + sFiltroFecha + sCondition + sOrder; oRecordSet = null; oRecordSet = ((SAPbobsCOM.Recordset)(ProcConexion.Comp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset))); oRecordSet.DoQuery(consulta); //if (oRecordSet.RecordCount <= 0) // Busco si hay ND DTW (Delivery) //{ // sTop = " TOP 10 "; // sCondition = " AND U_Origen = 'DTW' AND U_Estado = '" + PENDIENTE + "' "; // sOrder = " ORDER BY DocNum "; // consulta = "SELECT " + sTop + " DocEntry, " + FPAGOOINV + " AS FormaPago, " + ADENDA + " AS Adenda," + MOTREFND + " AS RazonRef" + // " FROM " + DocumentoB1.TABLA_NOTA_DEBITO + " WHERE ObjType = '13' AND DocSubType = 'DN' " + sFiltroFecha + sCondition + sOrder; // oRecordSet.DoQuery(consulta); //} while (!oRecordSet.EoF) { numero = oRecordSet.Fields.Item("DocEntry").Value; NotaDebitoB1 doc = new NotaDebitoB1(); doc.ActualizarEstadoDocumento(numero, ENPROCESO, String.Empty); formaPago = oRecordSet.Fields.Item("FormaPago").Value; adenda = oRecordSet.Fields.Item("Adenda").Value; razonRef = oRecordSet.Fields.Item("RazonRef").Value; this.enviarND(numero, formaPago, adenda, razonRef); oRecordSet.MoveNext(); } } else if (tipo == "NC") //Nota de Crédito { /* Busco primero todas las NC de WS */ sTop = ""; sCondition = " AND U_Origen = 'WS' AND U_Estado = '" + PENDIENTE + "' "; sOrder = " ORDER BY DocNum "; consulta = "SELECT " + sTop + " DocEntry," + FPAGOORIN + " AS FormaPago," + ADENDA + " AS Adenda," + MOTREFNC + " AS RazonRef" + " FROM [" + DocumentoB1.TABLA_NOTA_CREDITO + "] WHERE ObjType = '14' " + sFiltroFecha + sCondition + sOrder; oRecordSet = null; oRecordSet = ((SAPbobsCOM.Recordset)(ProcConexion.Comp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset))); oRecordSet.DoQuery(consulta); //if (oRecordSet.RecordCount <= 0) // Busco si hay NC DTW (Delivery) //{ // sTop = " TOP 10 "; // sCondition = " AND U_Origen = 'DTW' AND U_Estado = '" + PENDIENTE + "' "; // sOrder = " ORDER BY DocNum "; // consulta = "SELECT " + sTop + " DocEntry," + FPAGOORIN + " AS FormaPago," + ADENDA + " AS Adenda," + MOTREFNC + " AS RazonRef" + // " FROM [" + DocumentoB1.TABLA_NOTA_CREDITO + "] WHERE ObjType = '14' " + sFiltroFecha + sCondition + sOrder; // oRecordSet.DoQuery(consulta); //} while (!oRecordSet.EoF) { numero = oRecordSet.Fields.Item("DocEntry").Value; NotaCreditoB1 doc = new NotaCreditoB1(); doc.ActualizarEstadoDocumento(numero, ENPROCESO, String.Empty); formaPago = oRecordSet.Fields.Item("FormaPago").Value; adenda = oRecordSet.Fields.Item("Adenda").Value; razonRef = oRecordSet.Fields.Item("RazonRef").Value; this.enviarNC(numero, formaPago, adenda, razonRef); oRecordSet.MoveNext(); } } if (oRecordSet != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(oRecordSet); GC.Collect(); oRecordSet = null; } } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString()); } }
private void enviarFactura(int numeroDocumento, string formaPago, string adenda) { AdminEventosUI eventos = new AdminEventosUI(true); FacturaB1 facturaB1 = new FacturaB1(); DatosPDF datosPdf = new DatosPDF(); datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "INV1", datosPdf); datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "OINV", datosPdf); datosPdf.NombreVendedor = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "OINV"); datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "OINV"); datosPdf.Titular = DocumentoB1.Titular(numeroDocumento, "OINV"); datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf); datosPdf = DocumentoB1.ActualizarEstado(datosPdf); //Saint datosPdf = DocumentoB1.ActualizarCodigo(datosPdf); //Saint datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf); //Obtener el objeto cfe a partir de los datos del documento creado cfe = facturaB1.ObtenerDatosFactura(numeroDocumento, Objetos.CAE.ESTipoCFECFC.EFactura, formaPago, adenda); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado facturaB1.ActualizarDatosCFEFActura(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString()); DocumentoB1.ActualizarCAEAsiento(int.Parse(datosPdf.DocNum), cfe.TipoCFEInt.ToString(), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), "13", "F"); datosPdf.DescuentoGeneral = FacturaB1.descuentoGeneral; datosPdf.DescuentoExtranjero = FacturaB1.descuentoGeneralExtranjero; datosPdf.PorcentajeDescuento = FacturaB1.porcentajeDescuento; eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", null, "OINV"); //Cambio el estado a Procesado para no volver a enviarlo facturaB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; //Valida que el documento sea un resguardo if (manteDocumentos.ValidarDocumentoResguardo(numeroDocumento, "INV5")) { ResguardoB1 resguardoB1 = new ResguardoB1(); //Obtener el objeto cfe a partir de los datos del documento creado cfe = resguardoB1.ObtenerDatosResguardo(numeroDocumento, Objetos.CAE.ESTipoCFECFC.ERemito); List <ResguardoPdf> resguardoPdf = DocumentoB1.ObtenerResguardoPdf(numeroDocumento, "OINV", "INV1", "INV5"); if (cfe != null) { if (FrmEstadoContingencia.estadoContingencia.Equals("Y")) { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar("999", cfe.SerieComprobante); } else { //Obtener el objeto cae utilizado en el documento creado cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante); } //Actualizar datos del CFE en el documento creado resguardoB1.ActualizarDatosCFEResguardo(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString()); datosPdf.DescuentoGeneral = ResguardoB1.descuentoGeneral; datosPdf.DescuentoExtranjero = ResguardoB1.descuentoGeneralExtranjero; eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", resguardoPdf, "OINV"); //Cambio el estado a Procesado para no volver a enviarlo resguardoB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad); cfe = null; cae = null; } } } }