예제 #1
0
파일: WebService.cs 프로젝트: ahazan/FE21
        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());
            }
        }
예제 #2
0
파일: WebService.cs 프로젝트: ahazan/FE21
        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;
                    }
                }
            }
        }