/// <summary>
        /// Crea el xml de una factura PM a partir de una fila de datos en una hoja excel. Si no existe el proveedor, lo crea.
        /// </summary>
        /// <param name="hojaXl">Hoja excel</param>
        /// <param name="filaXl">Fila de la hoja excel a procesar</param>
        public void integraFacturaPMyProveedor(ExcelWorksheet hojaXl, int filaXl, string sTimeStamp)
        {
            this.iError = 0;
            eConnectType      docEConnectPM   = new eConnectType();
            eConnectType      docEConnectProv = new eConnectType();
            FacturaDeCompraPM factura         = new FacturaDeCompraPM(_DatosConexionDB);
            Proveedor         proveedor       = new Proveedor(_DatosConexionDB);

            try
            {
                //Preparar nuevo proveedor en caso que sea factura y no exista en gp
                proveedor.preparaProveedorEconn(hojaXl, filaXl, _Param);
                if (proveedor.iError != 0)
                {
                    this.sMensaje = proveedor.sMensaje;
                    this.iError++;
                }

                //Prepara factura
                factura.preparaFacturaPM(hojaXl, filaXl, sTimeStamp, _Param);
                this._filaNuevaFactura = factura.iniciaNuevaFacturaEn;
                this.sMensajeDocu      = "Fila: " + filaXl.ToString() + " Número Doc: " + factura.facturaPm.DOCNUMBR + " Proveedor: " + factura.facturaPm.VENDORID + " Monto: " + factura.facturaPm.PRCHAMNT.ToString();

                if (this.iError == 0 && factura.iError != 0)
                {
                    this.sMensaje = factura.sMensaje;
                    this.iError++;
                }

                //Ingresa nuevo proveedor
                if (this.iError == 0 && proveedor.arrVendorType != null && proveedor.arrVendorType.Count() > 0)
                {
                    docEConnectProv.PMVendorMasterType = proveedor.arrVendorType;
                    this.serializa(docEConnectProv);

                    if (this.iError == 0)
                    {
                        this.integraEntityXml();
                    }
                }

                //Ingresa la factura a GP
                if (this.iError == 0)
                {
                    docEConnectPM.PMTransactionType = factura.arrFacturaPmType;
                    this.serializa(docEConnectPM);

                    //debug!!!!
                    //this.iError++;
                    //sMensaje = _sDocXml;

                    if (this.iError == 0)
                    {
                        this.integraTransactionXml();
                    }
                }

                //Si es factura agrega datos para el servicio de impuestos
                if (this.iError == 0 && factura.facturaPm.DOCTYPE == 1)
                {
                    FacturaDeCompraAdicionales adicionalesFactura = new FacturaDeCompraAdicionales(_DatosConexionDB, factura);
                    adicionalesFactura.spIfc_AgregaTII_4001();
                    if (adicionalesFactura.iError != 0)
                    {
                        this.sMensaje = adicionalesFactura.sMensaje;
                        this.iError++;
                    }
                }
            }
            catch (eConnectException eConnErr)
            {
                sMensaje = "Excepción al preparar factura. " + eConnErr.Message + "[integraFacturaPMyProveedor.integraFacturaPM]";
                iError++;
            }
            catch (ApplicationException ex)
            {
                sMensaje = "Excepción de aplicación. " + ex.Message + "[integraFacturaPMyProveedor.integraFacturaPM]";
                iError++;
            }
            catch (Exception errorGral)
            {
                sMensaje = "Excepción desconocida. " + errorGral.Message + " [integraFacturaPMyProveedor.integraFacturaPM]";
                iError++;
            }
        }
        /// <summary>
        /// Crea el xml de una factura PM 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 integraFacturaPM(ExcelWorksheet hojaXl, int filaXl, string sTimeStamp)
        {
            this.iError = 0;
            eConnectType      docEConnectPM   = new eConnectType();
            eConnectType      docEConnectProv = new eConnectType();
            FacturaDeCompraPM factura         = new FacturaDeCompraPM(_DatosConexionDB);
            Proveedor         proveedor       = new Proveedor(_DatosConexionDB);

            try
            {
                //Prepara factura
                factura.preparaFacturaPM(hojaXl, filaXl, sTimeStamp, _Param);
                this._filaNuevaFactura = factura.iniciaNuevaFacturaEn;
                this.sMensajeDocu      = "Fila: " + filaXl.ToString() + " Número Doc: " + factura.facturaPm.DOCNUMBR + " Proveedor: " + factura.facturaPm.VENDORID + " Monto: " + factura.facturaPm.PRCHAMNT.ToString();

                if (this.iError == 0 && factura.iError != 0)
                {
                    this.sMensaje = factura.sMensaje;
                    this.iError++;
                }

                //Ingresa la factura a GP
                if (this.iError == 0)
                {
                    docEConnectPM.PMTransactionType = factura.arrFacturaPmType;
                    this.serializa(docEConnectPM);

                    //debug!!!!
                    //this.iError++;
                    //sMensaje = _sDocXml;

                    if (this.iError == 0)
                    {
                        this.integraTransactionXml();
                    }
                }

                if (_Param.FacturaPmLOCALIZACION.Equals("ARG"))
                {
                    //Si es factura agrega datos para el servicio de impuestos
                    FacturaDeCompraAdicionales adicionalesFactura = new FacturaDeCompraAdicionales(_DatosConexionDB, factura);
                    if (this.iError == 0 && factura.facturaPm.DOCTYPE == 1)
                    {
                        adicionalesFactura.spIfc_Nfret_gl10030();
                        adicionalesFactura.spIfc_awli_pm00400();
                    }
                }
            }
            catch (eConnectException eConnErr)
            {
                sMensaje = "Excepción al preparar factura. " + eConnErr.Message + "[IntegraComprasGP.integraFacturaPM]";
                iError++;
            }
            catch (ApplicationException ex)
            {
                sMensaje = "Excepción de aplicación. " + ex.Message + "[IntegraComprasGP.integraFacturaPM]";
                iError++;
            }
            catch (Exception errorGral)
            {
                sMensaje = "Excepción. " + errorGral.Message + " [IntegraComprasGP.integraFacturaPM]";
                iError++;
            }
        }
 public FacturaDeCompraAdicionales(ConexionDB DatosConexionDB, FacturaDeCompraPM facturaPm)
 {
     _DatosConexionDB = DatosConexionDB;
     _docPm           = facturaPm;
 }