예제 #1
0
        public static bool ActualizarFacturaSinDetalle(long idDocFiscalERP)
        {
            DBAxon    db      = new DBAxon();
            bool      bandera = false;
            DataTable dtFacturaPendienteEnvio    = new DataTable();
            int       respuestaFacturaSinDetalle = 0;

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();

                string queryFacturaSinDetalle = "UPDATE fehfe SET fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.FACTURA_SIN_DETALLE +
                                                " WHERE fehfemrcb=0 AND fehfeiddf=" + idDocFiscalERP;

                respuestaFacturaSinDetalle = db.ExecuteNonQuery(CommandType.Text, queryFacturaSinDetalle);
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: ActualizarFacturaSinDetalle(long idDocFiscalERP) " + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }

            return(respuestaFacturaSinDetalle > 0);
        }
예제 #2
0
        public static bool ActualizarAlEstadoOrigen(long idDocFiscalERP)
        {
            bool   b;
            DBAxon db = new DBAxon();

            db.OpenFactoryConnection();
            db.SetLockModeToWait();

            try
            {
                int    update      = 0;
                string queryUpdate = "UPDATE fehfe SET fehfestat=" + int.Parse(EstadoDocumentoFiscal.E100_PendienteDeEnvio.ToString()) +
                                     " WHERE fehfeiddf=" + idDocFiscalERP;

                update = db.ExecuteNonQuery(CommandType.Text, queryUpdate);

                b = update > 0;
            }
            catch (Exception ex)
            {
                //Log.Instancia.LogWS_Mensaje_FSX(file, "Excepción: RespuestaErrorActualizarDatosFacturaEstandar \r\n" +
                //    ex.Message);
                b = false;
            }

            return(b);
        }
예제 #3
0
        virtual public int GuardarRespuestaValidacion()
        {
            DBAxon db   = new DBAxon();
            int    resp = 0;

            try
            {
                Conexion cnx = new Conexion();
                cnx.CargarDatosConfiguracion((TipoConexion)Convert.ToInt32(ConfigurationManager.AppSettings["TipoConn"].ToString()),
                                             ConfigurationManager.AppSettings["BaseDatos"].ToString(),
                                             ConfigurationManager.AppSettings["DataSource"].ToString(),
                                             ConfigurationManager.AppSettings["UserId"].ToString(),
                                             ConfigurationManager.AppSettings["Password"].ToString(),
                                             ConfigurationManager.AppSettings["dbLocale"].ToString(),
                                             ConfigurationManager.AppSettings["clientLocale"].ToString());
                db.OpenFactoryConnection();

                db.SetLockModeToWait();
                db.SetDateFormat();
                DBAxon.Parameters[] prs = ParametrosSQL().ToArray();
                resp = db.ExecuteNonQuery(CommandType.Text, update + IdDocFiscalFEEL, prs);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
            return(resp);
        }
예제 #4
0
        public static DataTable ObtenerPublicacionNF()
        {
            DBAxon    db = new DBAxon();
            DataTable dtPublicacionPendienteEnvio = new DataTable();

            try
            {
                db.OpenFactoryConnection();

                string query = "SELECT * FROM fehfe " +

                               "WHERE fehfepnfe = 1 ";

                dtPublicacionPendienteEnvio = db.DataAdapter(CommandType.Text, query);

                return(dtPublicacionPendienteEnvio);
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: ObtenerDetalleFacturaElectronica(Int64 correlativo)" + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #5
0
        /// <summary>
        /// ::Metodo que actualiza los datos de la solicitud que se hace al anular un documento fiscal,
        /// ::esta respuesta se actualiza en la tabla fehfe.
        /// </summary>
        /// <returns></returns>
        public static bool ActualizarRespuestaAnularDocumentoFiscal(string codRespuesta, string txtRespuesta, long idDocFiscalERP)
        {
            DBAxon    db   = new DBAxon();
            string    file = Log.Instancia.GeneraNombreLog() + idDocFiscalERP;
            DataTable dtActualizarRespuestaAnularDocFiscal = new DataTable();
            int       respuestaUpdate = 0;

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();

                string queryUpdate = "UPDATE fehfe SET fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.ANULACION_PROCESADA +
                                     ", fehfecres='" + codRespuesta + "', fehfetres='" + txtRespuesta + "'" +
                                     " WHERE fehfemrcb=0 AND fehfeiddf=" + idDocFiscalERP;

                respuestaUpdate = db.ExecuteNonQuery(CommandType.Text, queryUpdate);
            }
            catch (Exception ex)
            {
                Log.Instancia.LogWS_Mensaje_FSX(file, "Excepción en: ActualizarRespuestaAnularDocumentoFiscal() al hacer un UPDATE fehfe" +
                                                ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }

            return(respuestaUpdate > 0);
        }
예제 #6
0
        public static DataTable AnularDocumentoFiscal()
        {
            DBAxon    db   = new DBAxon();
            string    file = Log.Instancia.GeneraNombreLog();
            DataTable dtAnularDocumentoFiscal = new DataTable();
            int       respuestaUpdate         = 0;

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();

                string query = "SELECT * FROM fehfe " +
                               "WHERE fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.PENDIENTE_DE_ANULAR + " AND fehfemrcb=0";

                dtAnularDocumentoFiscal = db.DataAdapter(CommandType.Text, query);

                if (dtAnularDocumentoFiscal.Rows.Count > 0)
                {
                    foreach (DataRow dataRow in dtAnularDocumentoFiscal.Rows)
                    {
                        try
                        {
                            Int64 idDocFiscalERP = Int64.Parse(dataRow["fehfeiddf"].ToString());
                            file += idDocFiscalERP.ToString();
                            string queryUpdate = "UPDATE fehfe SET fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.ENVIADO_AL_FEEL_PENDIENTE_DE_ANULAR +
                                                 " WHERE fehfemrcb=0 AND fehfeiddf=" + idDocFiscalERP;
                            respuestaUpdate = db.ExecuteNonQuery(CommandType.Text, queryUpdate);
                        }
                        catch (Exception ex)
                        {
                            Log.Instancia.LogWS_Mensaje_FSX(file, "Excepción en: AnularDocumentoFiscal() al hacer un UPDATE fehfe" +
                                                            ex.Message);
                        }
                    }
                }
                else
                {
                    return(new DataTable());
                }

                return(dtAnularDocumentoFiscal);
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: AnularDocumentoFiscal() en el try catch mas grande." + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #7
0
        public static void ActualizarDatosFactura(ResponsePublicarNF responseNF, Int32 nuevoEstado, long idDocumentoFiscalERP)
        {
            DBAxon db = new DBAxon();

            db.OpenFactoryConnection();

            try
            {
                db.BeginTransaction();
                db.SetLockModeToWait();
                db.SetDateFormat();

                if (responseNF != null)
                {
                    #region RESPUESTA
                    int responsequery = 0;

                    string codRespuesta = responseNF.respuesta.codRespuesta;

                    string txtRespuesta = responseNF.respuesta.txtRespuesta;
                    #endregion

                    DBAxon.Parameters[] prs = new DBAxon.Parameters[4]
                    {
                        new DBAxon.Parameters("nuevoEstado", nuevoEstado, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("codRespuesta", codRespuesta, ParameterDirection.Input, DbType.String, 10),
                        new DBAxon.Parameters("txtRespuesta", txtRespuesta, ParameterDirection.Input, DbType.String, 200),
                        new DBAxon.Parameters("idDocumentoFiscalERP", idDocumentoFiscalERP, ParameterDirection.Input, DbType.Int32)
                    };
                    string queryUpdate = "UPDATE fehfe SET fehfepnfe=?, fehfepnfc=? , fehfepnft=? " +
                                         "WHERE fehfeiddf=?";

                    responsequery = db.ExecuteNonQuery(CommandType.Text, queryUpdate, prs);
                    if (responsequery > 0)
                    {
                        db.CommitTransaction();
                    }
                }
            }
            catch (Exception eEx)
            {
                db.RollbackTransaction();
                throw new Exception(eEx.Message, eEx);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #8
0
        DataTable ObtenerListaDetalle(string idFactura)
        {
            DBAxon db = new DBAxon();

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();
                string query = "SELECT * FROM fedfe WHERE fedfeiddf=" + idFactura;
                return(db.DataAdapter(CommandType.Text, query));
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: ObtenerListaDetalle()|" + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #9
0
        public static DataTable ObtenerCabeceraFacturaElectronicaPendienteEnvio()
        {
            DBAxon    db = new DBAxon();
            DataTable dtFacturaPendienteEnvio = new DataTable();
            int       respuestaUpdate         = 0;

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();

                string query = "SELECT * FROM fehfe " +
                               "WHERE fehfemrcb=0 AND fehfelote=0 AND fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.PENDIENTES_DE_ENVIO;

                dtFacturaPendienteEnvio = db.DataAdapter(CommandType.Text, query);

                if (dtFacturaPendienteEnvio.Rows.Count > 0)
                {
                    string queryUpdate = "UPDATE fehfe SET fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.ENVIADA_AL_FEEL +
                                         " WHERE fehfemrcb=0 AND fehfelote=0 AND fehfestat=" + (int)ESTADOS_FACTURACION_ELECTRONICA.PENDIENTES_DE_ENVIO;

                    respuestaUpdate = db.ExecuteNonQuery(CommandType.Text, queryUpdate);
                }
                else
                {
                    return(new DataTable());
                }

                return(dtFacturaPendienteEnvio);
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: ObtenerCabezeraFacturaElectronica() en el try catch mas grande." + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #10
0
        public DataTable ObtenerUltimoIDE()
        {
            DataTable dtUltimaFactura = new DataTable();

            try
            {
                Axon.DAL.Conexion oConexion = new Axon.DAL.Conexion();
                DBAxon            db        = new DBAxon();
                db.OpenFactoryConnection();

                string query = "SELECT max(fehfeiddf) FROM fehfe";
                dtUltimaFactura = db.DataAdapter(CommandType.Text, query);
                db.CloseFactoryConnection();
                db = null;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }


            return(dtUltimaFactura);
        }
예제 #11
0
        DataTable ObtenerFacturasAConsultar()
        {
            DBAxon db = new DBAxon();

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();
                string query = "SELECT ";
                query += string.Join(", ", BD.Instancia.CamposFacturaCabeceraConsolidado);
                query += ", fehfecsta FROM fehfe WHERE fehfeecdf = " + EstadoDocumentoFiscal.E500_PendienteDeConsulta;
                return(db.DataAdapter(CommandType.Text, query));
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: ObtenerFacturasAConsultar()|" + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #12
0
        /// <summary>
        /// ::Método que actualiza la cabecera de la factura con error, dado que el servicio del FEEL respondio con un error,
        /// ya sea por validación, etc.
        /// ::Datos que se actualizan: codRespuesta, txtRespuesta y codEstado
        /// </summary>
        /// <param name="respuestaFacturaEstandar">Objeto respuesta</param>
        /// <returns>bool</returns>
        public bool RespuestaErrorActualizarDatosFacturaEstandar(string codRespuesta, string textoRespuesta, long idDocFiscalERP)
        {
            bool b;

            //string file = Log.Instancia.GeneraNombreLog();
            //file += respuestaFacturaEstandar.proceso.idDocFiscalERP;

            try
            {
                DBAxon db = new DBAxon();
                db.OpenFactoryConnection();
                int update = 0;

                if (!string.IsNullOrEmpty(codRespuesta))
                {
                    string queryUpdate = "UPDATE fehfe SET fehfecres='" + codRespuesta + "', fehfetres='" + textoRespuesta + "', " +
                                         "fehfestat=" + int.Parse(EstadoDocumentoFiscal.E103_RespuestaEnviarConError.ToString()) +
                                         " WHERE fehfeiddf=" + idDocFiscalERP;

                    update = db.ExecuteNonQuery(CommandType.Text, queryUpdate);

                    b = update > 0;
                }
                else
                {
                    b = false;
                }
            }
            catch (Exception ex)
            {
                //Log.Instancia.LogWS_Mensaje_FSX(file, "Excepción: RespuestaErrorActualizarDatosFacturaEstandar \r\n" +
                //    ex.Message);
                b = false;
            }

            return(b);
        }
예제 #13
0
        void CambiarEstadoConsultaFactura(int idFactura, int estado)
        {
            DBAxon db = new DBAxon();

            try
            {
                db.OpenFactoryConnection();
                db.SetLockModeToWait();
                string update = "UPDATE fehfe SET fehfeecdf = " + estado + " WHERE fehfeiddf = ?";

                db.ExecuteNonQuery(CommandType.Text, update, new DBAxon.Parameters[] {
                    new DBAxon.Parameters("iddf", idFactura, ParameterDirection.Input, DbType.Int32)
                });
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: MarcarComoConsultaEnviada()|" + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #14
0
        public static DataTable ObtenerDetalleFacturaElectronicaPendienteEnvio(Int64 idDocFiscalERP)
        {
            DBAxon    db = new DBAxon();
            DataTable dtDetalleFacturaPendienteEnvio = new DataTable();

            try
            {
                db.OpenFactoryConnection();

                string query = "SELECT * FROM fedfe WHERE fedfeiddf=" + idDocFiscalERP;
                dtDetalleFacturaPendienteEnvio = db.DataAdapter(CommandType.Text, query);

                return(dtDetalleFacturaPendienteEnvio);
            }
            catch (Exception ex)
            {
                throw new Exception("Excepción: ObtenerDetalleFacturaElectronica(Int64 correlativo)" + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #15
0
        public void GeneraFacturaestandar()
        {
            int    index         = cbxEstadoFactura.SelectedIndex;
            string estadoFactura = string.Empty;

            if (index != -1)
            {
                //MessageBox.Show("Debe seleccionar un estado");
                switch (index)
                {
                case 0:
                    estadoFactura = "100";
                    break;

                case 1:
                    estadoFactura = "200";
                    break;

                default:
                    break;
                }
            }

            int    indexTipoFactura = cbxTipoFactura.SelectedIndex;
            string tipoFactura      = string.Empty;

            if (indexTipoFactura != -1)
            {
                //MessageBox.Show("Debe seleccionar un estado");
                switch (indexTipoFactura)
                {
                case 0:
                    tipoFactura = "1";
                    break;

                case 1:
                    tipoFactura = "2";
                    break;

                case 2:
                    tipoFactura = "3";
                    break;

                default:
                    break;
                }
            }

            Axon.DAL.Conexion oConexion = new Axon.DAL.Conexion();
            oConexion.CargarDatosConfiguracion(tipoConexion, baseDatos, dataSource, userId, password, clientLocale, dbLocale);
            DBAxon db = new DBAxon();

            try
            {
                DataTable ult = new DataTable();
                ult = ObtenerUltimoIDE();
                int NroFacturaInicio = int.Parse(ult.Rows[0][0].ToString()) + 1;
                int esLote;

                if (!checkBox1.Checked)
                {
                    esLote = 0; // 0 no es lote 1 es lote
                }
                else
                {
                    esLote = 1;
                }

                int Identificadorlote = 0;
                int Cantidadlote      = Convert.ToInt32(textBox2.Text); //cantidad de facturas que se van a generar
                int contingencia      = 0;                              // si las facturas son de contingencia
                int CantidadDetalles  = Convert.ToInt32(textBox1.Text);

                string query = "";
                string Cabecera;
                string Detalle;
                int    iddf = 0;
                int    nfac = 0;
                int    item = 0;

                int limite = NroFacturaInicio + Cantidadlote;
                db.OpenFactoryConnection();
                db.SetLockModeToWait();
                db.BeginTransaction();

                for (int i = NroFacturaInicio; i < limite; i++)
                {
                    query = "";
                    iddf  = i;
                    nfac  = i;

                    Cabecera = "INSERT INTO fehfe" +
                               "(" +
                               "fehfenfac, fehfedire, fehfeciud, fehfezona, fehfenmed, fehfefemi, fehfegest, fehfemmes, fehfectdi, fehfeccuf, fehfendoc, " +
                               "fehfecomp, fehfecsuc,  fehfecpve, fehfenest, fehfersoc, fehfeteve, fehfeleve, fehfefeve, fehfeaeve, fehfensal, fehfedsal, " +
                               "fehfecmon, fehfemser, fehfedoco, fehfedico, fehfenpre,  fehfemtot, fehfemtaf, fehfemled, fehfeccli, fehfel317, fehfemtsi, " +
                               "fehfemtmo, fehfetcam, fehfemtoj, fehfemtsl, fehfecdse, fehfenemi, fehfecmpa, fehfemdes,  fehfeleye, fehfeusua, fehfentar, " +
                               "fehfepfac, fehfecpai, fehfepveh, fehfetenv, fehfemice, fehfenpro, fehfenrle, fehfecpag, fehfepent, fehfechue, fehfechab, " +
                               "fehfecmay, fehfecmen, fehfefiho, fehfenotu, fehfersot, fehfeckwh, fehfecmcu, fehfedley, fehfetase, fehfetalu, fehfeidca, " +
                               "fehfemtpu, fehfeomon, fehfeinco,  fehfepdes, fehfeldes, fehfepvbr, fehfegtfr, fehfesfro, fehfetffr, fehfemtfr, fehfemsin, " +
                               "fehferemi, fehfecons, fehfelapu, fehfeidbd, fehfemrcb, fehfestat,  fehfecres, fehfetres, fehfecufd, fehfecont, fehfelote, " +
                               "fehfeidlo, fehfeufac, fehfectip" +
                               ")" +
                               "VALUES" +
                               "(" +
                               "    " + nfac + "," +
                               "  'Gualberto villarroel 123', NULL, NULL, NULL, " +
                               "20190205162700" +
                               ", NULL, NULL, 1, NULL, '5642111', NULL, 0, 0, NULL, 'Juan Perez', NULL," +
                               "  NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, 50.5, NULL, NULL, 55421, NULL, NULL, 50.5, 6.97, NULL, NULL," +
                               tipoFactura + "," + //fehfecdse
                               "  1028305029, " +  //--fehfenemi
                               "  1," +
                               "  null, " +        //--fehfemdes
                               "    'Ley N 453: Est', 'FTL', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL," +
                               "  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL," +
                               "  0, " + estadoFactura + ", NULL, NULL, NULL, " +
                               "0, " + //fehfecont contingencia
                               "0, " + //fehfelote es lote
                               "0, " + //fehfeidlo id del lote
                               "1, " + //fehfeufac ultima factura
                               "1" +   //fehfectip codigo tipo factura
                               ");";

                    query += Cabecera;

                    for (int j = 1; j <= CantidadDetalles; j++)
                    {
                        Detalle = "              INSERT INTO fedfe" +
                                  "(                   fedfeiddf, fedfeitem, fedfeaeco, fedfecpsi, fedfecpro, fedfectha, fedfecnan, fedfedesc, fedfecdia, fedfecant, fedfemice, fedfepuni, fedfestot, fedfemdes, fedfeumed, fedfenser, fedfeespe, fedfeedet, fedfenqso, fedfeemed, fedfename, fedfenifm, fedfenofm, fedfefmed, fedfepdid, fedfenaci, fedfemrcb, fedfestat ) " +
                                  "VALUES ( " + iddf + ", " + j + ", " +
                                  " '123123', 123, 123, NULL, NULL, 'coca cola 1 litro', NULL, 5, NULL, 10.1, 10.1, " +
                                  "NULL" +
                                  ", 'botella', '1234567ADC', NULL, NULL, NULL,  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL );";
                        query += Detalle;
                    }
                    db.DataAdapter(CommandType.Text, query);
                }

                db.CommitTransaction();
                db.CloseFactoryConnection();
                db = null;
            }
            catch (Exception ex)
            {
                db.RollbackTransaction();
                throw new Exception(ex.Message);
            }
        }
예제 #16
0
        public void ServicioGFEvalidacion()
        {
            if (ValidarDatosConexion())
            {
                DBAxon                db           = new DBAxon();
                Axon.DAL.Conexion     oConexion    = new Axon.DAL.Conexion();
                string                baseDatos    = ConfigurationManager.AppSettings["BaseDatos"].ToString();
                string                dataSource   = ConfigurationManager.AppSettings["DataSource"].ToString();
                string                userId       = ConfigurationManager.AppSettings["UserId"].ToString();
                string                password     = ConfigurationManager.AppSettings["Password"].ToString();
                string                dbLocale     = ConfigurationManager.AppSettings["dbLocale"].ToString();
                string                clientLocale = ConfigurationManager.AppSettings["clientLocale"].ToString();
                Axon.DAL.TipoConexion tipoConexion = (Axon.DAL.TipoConexion)Convert.ToInt32(ConfigurationManager.AppSettings["TipoConn"].ToString());
                oConexion.CargarDatosConfiguracion(tipoConexion, baseDatos, dataSource, userId, password, clientLocale, dbLocale);

                DataTable facturas = null;
                try
                {
                    db.OpenFactoryConnection();
                    db.SetLockModeToWait();
                    string query = "SELECT FIRST 500 fehfeifee, fehfenfac, fehfeccuf FROM fehfe WHERE fehfeifee IS NOT NULL AND fehfenfac IS NOT NULL AND fehfeccuf IS NOT NULL";
                    facturas = db.DataAdapter(CommandType.Text, query);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                }
                finally
                {
                    db.CloseFactoryConnection();
                    db = null;
                }

                string request = @"{""tipoValidacion""= 12,""idDocFiscalFEEL"" = ""11"",""respuestaSIN"" = true,""codigoRecepcion"" = """",""estado"" = 903,""numeroFactura"" = 1,""cuf"" = ""BCA""}";
                Debug.WriteLine("Iniciando - " + DateTime.Now.ToString("HH:mm:ss"));
                Debug.WriteLine(facturas.Rows.Count + " facturas...");

                foreach (DataRow f in facturas.Rows)
                {
                    request = @"{""tipoValidacion"": 12,""idDocFiscalFEEL"" : ""[@idDoc]"",""respuestaSIN"" : true,""codigoRecepcion"": -1,""estado"": 903,""numeroFactura"": [@numFactu],""cuf"": ""[@cuf]""}";
                    request = request.Replace("[@idDoc]", f["fehfeifee"].ToString());
                    request = request.Replace("[@numFactu]", f["fehfenfac"].ToString());
                    request = request.Replace("[@cuf]", f["fehfeccuf"].ToString());

                    Stopwatch sw = new Stopwatch();
                    sw.Start();
                    //var restClient = new RestClient("http://localhost:64918/axon-gfe");
                    var restClient = new RestClient("http://190.104.3.139:1580/GFE/axon-gfe");
                    var rr         = new RestRequest("validacion", Method.POST);
                    rr.AddParameter("application/json", request, ParameterType.RequestBody);
                    var resp = restClient.Execute(rr);

                    sw.Stop();
                    Debug.WriteLine(sw.ElapsedMilliseconds);

                    JObject res = JObject.Parse(resp.Content);
                    if (res.ContainsKey("codRespuesta"))
                    {
                        if (res["codRespuesta"].ToString() != "0")
                        {
                            throw new Exception("Retornó error: " + res["codRespuesta"].ToString() + " - " + res["txtRespuesta"]);
                        }
                    }
                    else
                    {
                        throw new Exception("no hay codRespuesta" + Environment.NewLine + resp.Content);
                    }
                }

                Debug.WriteLine("FIN - " + DateTime.Now.ToString("HH:mm:ss"));
            }
        }
예제 #17
0
        private void GuardarResponseFactura(ResponseFactura response)
        {
            StringBuilder            sql        = new StringBuilder("UPDATE fehfe SET ");
            List <DBAxon.Parameters> parametros = new List <DBAxon.Parameters>();

            //Respuesta
            sql.Append("fehfecres=?, fehfetres=?, ");
            parametros.Add(new DBAxon.Parameters("cres", response.Respuesta.CodRespuesta, ParameterDirection.Input, DbType.String, 10));
            parametros.Add(new DBAxon.Parameters("tres", response.Respuesta.TxtRespuesta, ParameterDirection.Input, DbType.String, 200));

            //Proceso
            sql.Append("fehfeifee = ?, fehfecufd = ?, fehfecsta = ?, fehfectip = ?, ");
            parametros.Add(new DBAxon.Parameters("ifee", response.Proceso.IdDocFiscalFEEL, ParameterDirection.Input, DbType.String, 20));
            parametros.Add(new DBAxon.Parameters("cufd", response.Proceso.CUFD, ParameterDirection.Input, DbType.String, 100));
            parametros.Add(new DBAxon.Parameters("csta", response.Proceso.CodEstado, ParameterDirection.Input, DbType.String, 10));
            parametros.Add(new DBAxon.Parameters("ctip", response.Proceso.CodigoTipoFactura, ParameterDirection.Input, DbType.Int32));

            //Factura - Cabecera
            sql.Append("fehfefemi=?, fehfectdi=?, fehfeccuf=?, fehfecsuc=?, fehfecpve=?, fehfecdse=?, fehfecmpa=?, fehfeleye=?, fehfecmon=? , fehfestat=" + EstadoDocumentoFiscal.E102_ProcesadaCorrectamente.ToString() + " ");
            parametros.Add(new DBAxon.Parameters("femi", response.Factura.Cabecera.FechaEmision, ParameterDirection.Input, DbType.String, 20));
            parametros.Add(new DBAxon.Parameters("ctdi", response.Factura.Cabecera.CodigoTipoDocumentoIdentidad, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("ccuf", response.Factura.Cabecera.CUF, ParameterDirection.Input, DbType.String, 50));
            parametros.Add(new DBAxon.Parameters("csuc", response.Factura.Cabecera.CodigoSucursal, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("cpve", response.Factura.Cabecera.CodigoPuntoVenta, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("cdse", response.Factura.Cabecera.CodigoDocumentoSector, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("cmpa", response.Factura.Cabecera.CodigoMetodoPago, ParameterDirection.Input, DbType.Int16));
            parametros.Add(new DBAxon.Parameters("leye", response.Factura.Cabecera.Leyenda, ParameterDirection.Input, DbType.String, 200));
            parametros.Add(new DBAxon.Parameters("cmon", response.Factura.Cabecera.CodigoMoneda, ParameterDirection.Input, DbType.Int32));

            sql.Append(" WHERE fehfeiddf= ?;");
            parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32));

            //Factura - ListaDetalle
            dynamic factura = Convert.ChangeType(response.Factura, response.Factura.GetType());

            //sql.Append("UPDATE fedfe SET ");
            if (factura.Tipo != TipoFactura.notaExportacion)
            {
                foreach (var detalle in factura.ListaDetalle)
                {
                    sql.Append("UPDATE fedfe SET fedfeaeco=?, fedfecpsi=? WHERE fedfeiddf = ?;");
                    parametros.Add(new DBAxon.Parameters("aeco", detalle.ActividadEconomica, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("cpsi", detalle.CodigoProductoSIN, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32));
                }
            }
            else
            {
                foreach (var detalle in factura.ListaDetalle)
                {
                    sql.Append("UPDATE fedfe SET fedfeaeco=?, fedfecpsi=?, fedfecnan=? WHERE fedfeiddf = ?;");
                    parametros.Add(new DBAxon.Parameters("aeco", detalle.ActividadEconomica, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("cpsi", detalle.CodigoProductoSIN, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("cnan", detalle.CodigoNandina, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32));
                }
            }

            //BD
            DBAxon db = new DBAxon();

            try
            {
                db.OpenFactoryConnection();
                db.BeginTransaction();
                db.SetLockModeToWait();
                db.PrepareCommand(true, CommandType.Text, sql.ToString(), parametros.ToArray());
                db.command.ExecuteNonQuery();
                db.CommitTransaction();
            }
            catch (Exception ex)
            {
                db.RollbackTransaction();
                db.ExecuteNonQuery(CommandType.Text, "UPDATE fehfe SET fehfestat=" + int.Parse(EstadoDocumentoFiscal.E100_PendienteDeEnvio.ToString()) + " WHERE fehfeiddf=" + response.Proceso.IdDocFiscalERP);
                throw new Exception("Excepcion: GuardarResponseFactura() - " + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #18
0
        public bool ActualizarDatosFactura(ResponseFactura respuestaFacturaEstandar)
        {
            DBAxon db = new DBAxon();

#if DEBUG
            System.Diagnostics.Stopwatch cronoDB = new System.Diagnostics.Stopwatch();
            cronoDB.Start();
#endif
            db.OpenFactoryConnection();
            int updateCabecera = 0;
            int updateItem     = 0;

            try
            {
                db.BeginTransaction();
                db.SetLockModeToWait();
                db.SetDateFormat();

                if (respuestaFacturaEstandar != null && respuestaFacturaEstandar.Proceso != null && respuestaFacturaEstandar.Factura != null)
                {
                    #region RESPUESTA
                    string codRespuesta = respuestaFacturaEstandar.Respuesta.CodRespuesta;
                    string txtRespuesta = respuestaFacturaEstandar.Respuesta.TxtRespuesta;
                    #endregion

                    #region PROCESO
                    string idDocFiscalERP    = respuestaFacturaEstandar.Proceso.IdDocFiscalERP;
                    string idDocFiscalFEEL   = respuestaFacturaEstandar.Proceso.IdDocFiscalFEEL;
                    string cufd              = respuestaFacturaEstandar.Proceso.CUFD;
                    string codEstado         = respuestaFacturaEstandar.Proceso.CodEstado;
                    int    codigoTipoFactura = respuestaFacturaEstandar.Proceso.CodigoTipoFactura;
                    #endregion

                    #region FACTURA ESTANDAR

                    //CABECERA
                    string fechaEmision = respuestaFacturaEstandar.Factura.Cabecera.FechaEmision;
                    string codigoTipoDocumentoIdentidad = respuestaFacturaEstandar.Factura.Cabecera.CodigoTipoDocumentoIdentidad;
                    string cuf                   = respuestaFacturaEstandar.Factura.Cabecera.CUF;
                    int    codigoSucursal        = respuestaFacturaEstandar.Factura.Cabecera.CodigoSucursal;
                    int    codigoPuntoVenta      = respuestaFacturaEstandar.Factura.Cabecera.CodigoPuntoVenta;
                    int    codigoDocumentoSector = respuestaFacturaEstandar.Factura.Cabecera.CodigoDocumentoSector;
                    int    codigoMetodoPago      = respuestaFacturaEstandar.Factura.Cabecera.CodigoMetodoPago;
                    string leyenda               = respuestaFacturaEstandar.Factura.Cabecera.Leyenda;
                    int    codigoMoneda          = respuestaFacturaEstandar.Factura.Cabecera.CodigoMoneda;

                    DBAxon.Parameters[] prs = new DBAxon.Parameters[16]
                    {
                        new DBAxon.Parameters("codRespuesta", codRespuesta, ParameterDirection.Input, DbType.String, 10),
                        new DBAxon.Parameters("txtRespuesta", txtRespuesta, ParameterDirection.Input, DbType.String, 200),

                        new DBAxon.Parameters("idDocFiscalFEEL", idDocFiscalFEEL, ParameterDirection.Input, DbType.String, 20),
                        new DBAxon.Parameters("cufd", cufd, ParameterDirection.Input, DbType.String, 100),
                        new DBAxon.Parameters("codEstado", codEstado, ParameterDirection.Input, DbType.String, 10),
                        new DBAxon.Parameters("codigoTipoFactura", codigoTipoFactura, ParameterDirection.Input, DbType.Int32),

                        new DBAxon.Parameters("fechaEmision", fechaEmision, ParameterDirection.Input, DbType.String, 20),
                        new DBAxon.Parameters("codigoTipoDocumentoIdentidad", codigoTipoDocumentoIdentidad, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("cuf", cuf, ParameterDirection.Input, DbType.String, 50),
                        new DBAxon.Parameters("codigoSucursal", codigoSucursal, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("codigoPuntoVenta", codigoPuntoVenta, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("codigoDocumentoSector", codigoDocumentoSector, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("codigoMetodoPago", codigoMetodoPago, ParameterDirection.Input, DbType.Int16),
                        new DBAxon.Parameters("leyenda", leyenda, ParameterDirection.Input, DbType.String, 200),
                        new DBAxon.Parameters("codigoMoneda", codigoMoneda, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("idDocFiscalERP", idDocFiscalERP, ParameterDirection.Input, DbType.Int32)
                    };

                    string queryUpdate = "UPDATE fehfe SET fehfecres=?, fehfetres=? , fehfeifee=?, fehfecufd=?, " +
                                         "fehfecsta=?, fehfectip=?,  fehfefemi=?, fehfectdi=?, fehfeccuf=?, fehfecsuc=?, " +
                                         "fehfecpve=?, fehfecdse=?, fehfecmpa=?, fehfeleye=?, fehfecmon=? , fehfestat=" + int.Parse(EstadoDocumentoFiscal.E102_ProcesadaCorrectamente.ToString()) +
                                         " WHERE fehfeiddf=?";

                    updateCabecera = db.ExecuteNonQuery(CommandType.Text, queryUpdate, prs);

                    #endregion

                    if (updateCabecera > 0)
                    {
                        #region DETALLE
                        dynamic factura = Convert.ChangeType(respuestaFacturaEstandar.Factura, respuestaFacturaEstandar.Factura.GetType());

                        if (factura.Tipo != TipoFactura.notaExportacion)
                        {
                            foreach (var item in factura.ListaDetalle)
                            {
                                int?actividadEconomica = item.ActividadEconomica ?? null;
                                int?codigoProductoSin  = item.CodigoProductoSIN ?? null;

                                DBAxon.Parameters[] prs2 = new DBAxon.Parameters[2]
                                {
                                    new DBAxon.Parameters("actividadEconomica", actividadEconomica, ParameterDirection.Input, DbType.Int32),
                                    new DBAxon.Parameters("codigoProductoSin", codigoProductoSin, ParameterDirection.Input, DbType.Int32)
                                };

                                updateItem = db.ExecuteNonQuery(CommandType.Text, "UPDATE fedfe SET fedfeaeco=?, fedfecpsi=? " +
                                                                "WHERE fedfeiddf =" + idDocFiscalERP, prs2);
                            }
                        }
                        else
                        {
                            foreach (var item in factura.ListaDetalle)
                            {
                                int?actividadEconomica = item.ActividadEconomica ?? null;
                                int?codigoProductoSin  = item.CodigoProductoSIN ?? null;

                                DBAxon.Parameters[] prs2 = new DBAxon.Parameters[3]
                                {
                                    new DBAxon.Parameters("actividadEconomica", actividadEconomica, ParameterDirection.Input, DbType.Int32),
                                    new DBAxon.Parameters("codigoProductoSin", codigoProductoSin, ParameterDirection.Input, DbType.Int32),
                                    new DBAxon.Parameters("codigoNandina", item.CodigoNandina, ParameterDirection.Input, DbType.Int32)
                                };

                                updateItem = db.ExecuteNonQuery(CommandType.Text, "UPDATE fedfe SET fedfeaeco=?, fedfecpsi=?, fedfecnan=? " +
                                                                "WHERE fedfeiddf =" + idDocFiscalERP, prs2);
                            }
                        }

                        db.CommitTransaction();
                        #endregion

#if DEBUG
                        cronoDB.Stop();
                        Cronometro.Instancia.TotalMs += cronoDB.ElapsedMilliseconds;
#endif
                    }
                }
                else
                {
                    //string file = Log.Instancia.GeneraNombreLog();
                    //file += respuestaFacturaEstandar.Proceso.IdDocFiscalERP;
                    //Log.Instancia.LogWS_Mensaje_FSX(file, "Esta nulo o respuestaFacturaEstandar ó respuestaFacturaEstandar.Proceso ó respuestaFacturaEstandar.Factura");
                }

                return((updateCabecera + updateItem) >= 2);
            }
            catch (Exception eEx)
            {
                db.RollbackTransaction();
                throw new Exception(eEx.Message, eEx);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }
예제 #19
0
        void ActualizarDocumentoFiscal(ResponseConsultaDocumentoFiscal responseConsultaDocumentoFiscal, DataRow facturaLocal)
        {
            dynamic facturaFEEL = Convert.ChangeType(responseConsultaDocumentoFiscal.Factura, responseConsultaDocumentoFiscal.Factura.GetType());

            List <DBAxon.Parameters> paramsCabecera = new List <DBAxon.Parameters>();
            string updCabecera = ConstruirUpdate(facturaFEEL.Cabecera, facturaFEEL.CamposDB, facturaLocal, "fehfe", "fehfeiddf", facturaLocal["fehfeiddf"].ToString(), out paramsCabecera);

            //Estado
            string updEstado = ConstruirUpdateEstado(responseConsultaDocumentoFiscal.Estado, facturaLocal["fehfecsta"].ToString(), facturaLocal["fehfeiddf"].ToString());

            //Detalle
            List <string> updsDetalle = new List <string>();
            DataTable     dt          = ObtenerListaDetalle(facturaLocal["fehfeiddf"].ToString());

            List <DBAxon.Parameters>[] paramsDetalles = new List <DBAxon.Parameters> [facturaFEEL.ListaDetalle.Count];

            if (dt != null && facturaFEEL.ListaDetalle.Count == dt.Rows.Count)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    paramsDetalles[i] = new List <DBAxon.Parameters>();
                    updsDetalle.Add(ConstruirUpdate(facturaFEEL.ListaDetalle[i], facturaFEEL.CamposDB, dt.Rows[i], "fedfe", "fedfeiddf", dt.Rows[i]["fedfeiddf"].ToString(), out paramsDetalles[i]));
                }
            }
            else
            {
                if (facturaFEEL.ListaDetalle.Count > 0)   //en caso de que haya una cantidad diferente en las listas de detalle
                {
                    updCabecera += "DELETE FROM fedfe WHERE fedfeiddf = ?;";
                    paramsCabecera.Add(new DBAxon.Parameters("iddf", facturaLocal["fehfeiddf"].ToString(), ParameterDirection.Input, DbType.Int32));

                    for (int i = 0; i < facturaFEEL.ListaDetalle.Count; i++)
                    {
                        paramsDetalles[i] = new List <DBAxon.Parameters>();
                        updsDetalle.Add(ConstruirInsert(facturaFEEL.ListaDetalle[i], facturaFEEL.CamposDB, "fedfe", "fedfeiddf", facturaLocal["fehfeiddf"].ToString(), out paramsDetalles[i]));
                    }
                }
            }

            bool   huboCambios = false;
            string sql         = string.Empty;
            List <DBAxon.Parameters> paramsGral = new List <DBAxon.Parameters>();
            DBAxon db = new DBAxon();

            try
            {
                db.OpenFactoryConnection();
                db.BeginTransaction();
                db.SetLockModeToWait();

                if (paramsCabecera.Count > 1) //Si hay diferencias, guardar
                {
                    paramsGral.AddRange(paramsCabecera.ToArray());
                    sql        += updCabecera.ToString();
                    huboCambios = true;
                }

                for (int i = 0; i < updsDetalle.Count; i++)
                {
                    if (paramsDetalles[i].Count > 1)
                    {
                        paramsGral.AddRange(paramsDetalles[i].ToArray());
                        sql        += updsDetalle[i].ToString();
                        huboCambios = true;
                    }
                }

                huboCambios = !string.IsNullOrEmpty(updEstado);

                if (huboCambios)   //agregar hora y fecha de corrección
                {
                    sql += "UPDATE fehfe SET fehfevfco = ?, fehfevhco = ?, fehfeecdf = ? WHERE fehfeiddf = ?;";
                    paramsGral.AddRange(new DBAxon.Parameters[] {
                        new DBAxon.Parameters("vfco", DateTime.Now, ParameterDirection.Input, DbType.Date),
                        new DBAxon.Parameters("vhco", DateTime.Now.ToString("HH:mm:ss"), ParameterDirection.Input, DbType.String, 8),
                        new DBAxon.Parameters("ecdf", EstadoDocumentoFiscal.E503_Actualizada, ParameterDirection.Input, DbType.Int32),
                        new DBAxon.Parameters("iddf", Convert.ToInt32(facturaLocal["fehfeiddf"].ToString()), ParameterDirection.Input, DbType.Int32)
                    });
                    if (!string.IsNullOrEmpty(updEstado))
                    {
                        sql += updEstado;
                    }
                    db.PrepareCommand(true, CommandType.Text, sql, paramsGral.ToArray());
                    db.command.ExecuteNonQuery();

                    GuardarLogDeCambios(sql, paramsGral, facturaLocal, dt);
                }
                db.CommitTransaction();
            }
            catch (Exception ex)
            {
                db.RollbackTransaction();
                throw new Exception("Excepción: ActualizarDocumentoFiscales()" + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }