예제 #1
0
        /// <summary>
        /// Crea el xml de una factura pop a partir de una fila de datos en una hoja excel.
        /// </summary>
        /// <param name="hojaXl">Hoja excel</param>
        /// <param name="filaXl">Fila de la hoja excel a procesar</param>
        public void integraFacturaPOP(ExcelWorksheet hojaXl, int filaXl, string sTimeStamp)
        {
            this.iError = 0;
            eConnectType       docEConnectIV  = new eConnectType();
            eConnectType       docEConnectPOP = new eConnectType();
            FacturaDeCompraPOP facturaPop     = new FacturaDeCompraPOP(_DatosConexionDB, 1);

            try
            {
                facturaPop.preparaFacturaPOP(hojaXl, filaXl, sTimeStamp, _Param);
                _filaNuevaFactura = facturaPop.iniciaNuevaFacturaEn;
                this.sMensajeDocu = "Fila: " + filaXl.ToString() + " Número Doc: " + facturaPop.facturaPopCa.VNDDOCNM + " Proveedor: " + facturaPop.facturaPopCa.VENDORID;

                //Ingresa el artículo - proveedor a GP
                if (facturaPop.iError == 0)
                {
                    docEConnectIV.IVVendorItemType = facturaPop.myVendorItemType;
                    this.serializa(docEConnectIV);
                    if (this.iError == 0)
                    {
                        this.integraEntityXml();
                    }
                }
                else
                {
                    this.sMensaje = facturaPop.sMensaje;
                    this.iError++;
                }

                //Ingresa la factura a GP
                if (this.iError == 0 && facturaPop.iError == 0)
                {
                    docEConnectPOP.POPReceivingsType = facturaPop.myFacturaPopType;
                    this.serializa(docEConnectPOP);
                    if (this.iError == 0)
                    {
                        this.integraTransactionXml();
                    }
                }

                //Si no hubo error y no es factura cogs, agrega datos para el servicio de impuestos
                FacturaDeCompraAdicionales adicionalesFactura = new FacturaDeCompraAdicionales(_DatosConexionDB, facturaPop);
                if (this.iError == 0 && facturaPop.iError == 0 && facturaPop.facturaPopCa.REFRENCE.Length > 1 && facturaPop.facturaPopCa.REFRENCE.Substring(0, 2) != "CO")
                {
                    adicionalesFactura.spEconn_nsacoa_gl00021(hojaXl, filaXl, _Param);
                    if (adicionalesFactura.iError != 0)
                    {
                        this.iError++;
                        this.sMensaje = adicionalesFactura.sMensaje;
                    }
                }

                //Si no hubo errores, agregar trip codes a los asientos contables
                if (this.iError == 0 && facturaPop.iError == 0)
                {
                    adicionalesFactura.spIfcAgregaDistribucionContable(facturaPop.facturaPopCa.POPRCTNM);
                    if (adicionalesFactura.iError != 0)
                    {
                        this.iError++;
                        this.sMensaje = adicionalesFactura.sMensaje;
                    }
                }
            }
            catch (eConnectException eConnErr)
            {
                sMensaje = "Excepción al preparar factura. " + eConnErr.Message + "[integraFacturaPOP]";
                iError++;
            }
            catch (ApplicationException ex)
            {
                sMensaje = "Excepción de aplicación. " + ex.Message + "[integraFacturaPOP]";
                iError++;
            }
            catch (Exception errorGral)
            {
                sMensaje = "Excepción desconocida. " + errorGral.Message + " [integraFacturaPOP]";
                iError++;
            }
        }
 public FacturaDeCompraAdicionales(ConexionDB DatosConexionDB, FacturaDeCompraPOP facturaPop)
 {
     _DatosConexionDB = DatosConexionDB;
     _facturaPop      = facturaPop;
 }