Exemple #1
0
        /// <summary>
        /// elimina un registro
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            try
            {
                using (var conexion = new DataModelFE())
                {
                    var idProducto   = long.Parse(e.Values["idProducto"].ToString());
                    var tipoImpuesto = e.Values["tipoImpuesto"].ToString().ToUpper();

                    object[] key = new object[] { idProducto, tipoImpuesto };


                    //busca objeto
                    var itemToRemove = conexion.ProductoImpuesto.Where(x => x.idProducto == idProducto).Where(x => x.tipoImpuesto == tipoImpuesto).FirstOrDefault();
                    conexion.ProductoImpuesto.Remove(itemToRemove);
                    conexion.SaveChanges();

                    //esto es para el manero del devexpress
                    e.Cancel = true;
                    this.ASPxGridView1.CancelEdit();

                    ((ASPxGridView)sender).JSProperties["cpUpdatedMessage"] = "Los datos se eliminaron correctamente, puede continuar.";
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);

                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(fullErrorMessage, ex.EntityValidationErrors);
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            finally
            {
                //refescar los datos
                this.refreshData();
            }
        }
Exemple #2
0
        /// <summary>
        /// inserta un registro nuevo
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
        {
            try
            {
                using (var conexion = new DataModelFE())
                {
                    //se declara el objeto a insertar
                    TipoDocumento dato = new TipoDocumento();
                    //llena el objeto con los valores de la pantalla
                    dato.codigo          = e.NewValues["codigo"] != null ? e.NewValues["codigo"].ToString().ToUpper() : null;
                    dato.descripcion     = e.NewValues["descripcion"] != null ? e.NewValues["descripcion"].ToString().ToUpper() : null;
                    dato.descripcionEN   = e.NewValues["descripcionEN"] != null ? e.NewValues["descripcionEN"].ToString().ToUpper() : null;
                    dato.estado          = e.NewValues["estado"].ToString();
                    dato.usuarioCreacion = Session["usuario"].ToString();
                    dato.fechaCreacion   = Date.DateTimeNow();

                    //agrega el objeto
                    conexion.TipoDocumento.Add(dato);
                    conexion.SaveChanges();

                    //esto es para el manero del devexpress
                    e.Cancel = true;
                    this.ASPxGridView1.CancelEdit();
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);
                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(fullErrorMessage, ex.EntityValidationErrors);
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            finally
            {
                //refescar los datos
                this.refreshData();
            }
        }
 protected void cmbEmisorDistrito_ValueChanged(object sender, EventArgs e)
 {
     using (var conexion = new DataModelFE())
     {
         this.cmbEmisorBarrio.SelectedItem = null;
         this.cmbEmisorBarrio.Items.Clear();
         foreach (var item in conexion.Ubicacion.
                  Where(x => x.codProvincia == this.cmbEmisorProvincia.Value.ToString()).
                  Where(x => x.codCanton == this.cmbEmisorCanton.Value.ToString()).
                  Where(x => x.codDistrito == this.cmbEmisorDistrito.Value.ToString()).
                  Select(x => new { x.codBarrio, x.nombreBarrio }).Distinct())
         {
             this.cmbEmisorBarrio.Items.Add(item.nombreBarrio, item.codBarrio);
         }
         this.cmbEmisorBarrio.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
     }
 }
Exemple #4
0
Fichier : Rol.cs Projet : yeco96/FE
        public override string[] FindUsersInRole(string roleName, string usernameToMatch)
        {
            using (var conexion = new DataModelFE())
            {
                string[] users = conexion.Usuario.Where(x => x.rol == roleName && (x.codigo == usernameToMatch || x.nombre == usernameToMatch)).Select(x => x.codigo).ToArray();

                if (users != null)
                {
                    return(users);
                }
                else
                {
                    return new string[] { }
                };
            }
        }
    }
Exemple #5
0
 /// <summary>
 /// carga inicial de todos los registros
 /// </summary>
 private void refreshData()
 {
     if (!this.ASPxGridView1.IsEditing)
     {
         using (var conexion = new DataModelFE())
         {
             string emisor = Session["emisor"].ToString();
             this.ASPxGridView1.DataSource = (from Emisor in conexion.EmisorReceptorIMEC
                                              from cliente in conexion.Cliente
                                              where Emisor.identificacion == cliente.receptor && cliente.emisor == emisor
                                              select Emisor
                                              ).ToList();
             conexion.EmisorReceptorIMEC.ToList();
             this.ASPxGridView1.DataBind();
         }
     }
 }
        /// <summary>
        /// carga solo una vez para ahorar tiempo
        /// </summary>
        private void cargarCombos()
        {
            using (var conexion = new DataModelFE())
            {
                /* ESTADO */
                GridViewDataComboBoxColumn comboEstado = this.ASPxGridView1.Columns["estado"] as GridViewDataComboBoxColumn;
                comboEstado.PropertiesComboBox.Items.Clear();
                comboEstado.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Estado)));

                /* APLICA IMPUESTO VENTA Y SERVICIO*/
                GridViewDataComboBoxColumn comboAplicaIV = this.ASPxGridView1.Columns["aplicaIV"] as GridViewDataComboBoxColumn;
                comboAplicaIV.PropertiesComboBox.Items.Clear();
                comboAplicaIV.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Confirmacion)));


                GridViewDataComboBoxColumn comboaplicaIS = this.ASPxGridView1.Columns["aplicaIS"] as GridViewDataComboBoxColumn;
                comboaplicaIS.PropertiesComboBox.Items.Clear();
                comboaplicaIS.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Confirmacion)));



                /* UNIDAD MEDIDA */
                GridViewDataComboBoxColumn comboUnidadMedida = this.ASPxGridView1.Columns["unidadMedida"] as GridViewDataComboBoxColumn;
                comboUnidadMedida.PropertiesComboBox.Items.Clear();
                foreach (var item in conexion.UnidadMedida.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    comboUnidadMedida.PropertiesComboBox.Items.Add(item.ToString(), item.codigo);
                }

                /* TIPO */
                GridViewDataComboBoxColumn comboTipo = this.ASPxGridView1.Columns["tipo"] as GridViewDataComboBoxColumn;
                comboTipo.PropertiesComboBox.Items.Clear();
                foreach (var item in conexion.TipoProductoServicio.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    comboTipo.PropertiesComboBox.Items.Add(item.descripcion, item.codigo);
                }

                /* TIPO SERVICIO / MERCANCIA */
                GridViewDataComboBoxColumn comboTipoServ = this.ASPxGridView1.Columns["tipoServMerc"] as GridViewDataComboBoxColumn;
                comboTipoServ.PropertiesComboBox.Items.Clear();
                comboTipoServ.PropertiesComboBox.Items.Add(new ListEditItem(TipoServMerc.MERCANCIA.ToString(), "ME"));
                comboTipoServ.PropertiesComboBox.Items.Add(new ListEditItem(TipoServMerc.SERVICIO.ToString(), "SE"));
                comboTipoServ.PropertiesComboBox.Items.Add(new ListEditItem(TipoServMerc.ACTIVO.ToString(), "AC"));
            }
        }
Exemple #7
0
        private void cargaPlanes()
        {
            /* PLAN */

            ASPxPageControl tabs = (ASPxPageControl)ASPxGridView1.FindEditFormTemplateControl("pageControl");
            ASPxFormLayout  form = (ASPxFormLayout)tabs.FindControl("formLayoutUbicacion");

            ASPxComboBox comboPlan = (ASPxComboBox)form.FindControl("cmbPlan");

            comboPlan.Items.Clear();
            using (var conexion = new DataModelFE())
            {
                foreach (var item in conexion.TipoPlan.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    comboPlan.Items.Add(item.descripcion, item.codigo);
                }
            }
        }
        /// <summary>
        /// carga inicial de todos los registros
        /// </summary>
        private void refreshData()
        {
            string emisor = Session["emisor"].ToString();

            using (var conexion = new DataModelFE())
            {
                List <WSRecepcionPOST> lista = conexion.WSRecepcionPOST.Where(x => x.fecha >= txtFechaInicio.Date && x.fecha <= txtFechaFin.Date && x.emisorIdentificacion == emisor).
                                               OrderByDescending(x => x.fecha).OrderByDescending(x => x.fechaCreacion).ToList();

                foreach (var item in lista)
                {
                    item.verificaTipoDocumentoCambioMoneda();
                    item.Receptor = conexion.EmisorReceptor.Find(item.receptorIdentificacion);
                }
                this.ASPxGridView1.DataSource = lista;
                this.ASPxGridView1.DataBind();
            }
        }
        /// <summary>
        /// carga solo una vez para ahorar tiempo
        /// </summary>
        private void cargarCombos()
        {
            // Cargar valores de combo para estado
            GridViewDataComboBoxColumn comboEstado = this.ASPxGridView1.Columns["estado"] as GridViewDataComboBoxColumn;

            comboEstado.PropertiesComboBox.Items.Clear();
            comboEstado.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Estado)));

            /* TIPO DOCUMENTO */
            using (var conexion = new DataModelFE())
            {
                GridViewDataComboBoxColumn comboTipoConsecutivo = this.ASPxGridView1.Columns["tipoDocumento"] as GridViewDataComboBoxColumn;
                foreach (var item in conexion.TipoConsecutivo.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    comboTipoConsecutivo.PropertiesComboBox.Items.Add(item.descripcion, item.codigo);
                }
                comboTipoConsecutivo.PropertiesComboBox.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
            }
        }
        protected void btnVerDocumento_Click(object sender, EventArgs e)
        {
            string clave  = Session["clave"].ToString();
            string emisor = Session["emisor"].ToString();

            using (var conexion = new DataModelFE())
            {
                Empresa empresa = conexion.Empresa.Find(emisor);
                //Validamos la informacion de empresa
                if (empresa.tipoImpresion.Equals("A4"))
                {
                    Response.Redirect("~/Pages/Consulta/" + clave);
                }
                else
                {
                    Response.Redirect("~/Pages/ConsultaRP/" + clave);
                }
            }
        }
Exemple #11
0
        /// <summary>
        /// carga solo una vez para ahorar tiempo
        /// </summary>
        private void cargarCombos()
        {
            using (var conexion = new DataModelFE())
            {
                /* ESTADO */
                GridViewDataComboBoxColumn comboEstado = this.ASPxGridView1.Columns["estado"] as GridViewDataComboBoxColumn;
                comboEstado.PropertiesComboBox.Items.Clear();
                comboEstado.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Estado)));


                /* PLAN */
                GridViewDataComboBoxColumn comboPlan = this.ASPxGridView1.Columns["plan"] as GridViewDataComboBoxColumn;
                comboPlan.PropertiesComboBox.Items.Clear();
                foreach (var item in conexion.TipoPlan.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    comboPlan.PropertiesComboBox.Items.Add(item.descripcion, item.codigo);
                }
            }
        }
Exemple #12
0
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            try
            {
                String mensajeConsulta = "";
                mensajeConsulta += "<b><p>Nombre: </p></b>" + txtNombre.Text.ToString().ToUpper();
                mensajeConsulta += "<b><p>Correo electrónico : </p></b>" + txtCorreo.Text.ToString().ToLower();
                mensajeConsulta += "<b><p>Consulta: </p></b>";
                mensajeConsulta += "<p></p>";
                mensajeConsulta += "<p></p>" + txtConsulta.Text;
                mensajeConsulta += "<p></p>";
                mensajeConsulta += "<p>Gracias</p>";

                using (var conexion = new DataModelFE())
                {
                    ConfiguracionGlobal dato = new ConfiguracionGlobal();

                    //llena el objeto con los valores de la pantalla
                    dato.codigo = "RECEPTOR_CONSULTA";

                    //busca el objeto
                    dato = conexion.ConfiguracionGlobal.Find(dato.codigo);
                    //string pCorreo = "*****@*****.**";
                    //string a = dato.descripcion;
                    Utilidades.sendMail(Usuario.USUARIO_AUTOMATICO, dato.descripcion, "Consulta de : " + txtNombre.Text.ToUpper(), mensajeConsulta, "", null, "", "", null);
                }

                this.alertMessages.Attributes["class"] = "alert alert-warning";
                this.alertMessages.InnerText           = String.Format("Consulta enviada satisfactoriamente.");
                this.txtConsulta.Text = "";
                this.txtNombre.Text   = "";
                this.txtCorreo.Text   = "";
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            finally
            {
                //refescar los datos
            }
        }
Exemple #13
0
        /// <summary>
        /// elimina un registro
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            try
            {
                using (var conexion = new DataModelFE())
                {
                    var id = e.Values["codigo"].ToString();

                    //busca objeto
                    var itemToRemove = conexion.Empresa.SingleOrDefault(x => x.codigo == id);
                    conexion.Empresa.Remove(itemToRemove);
                    conexion.SaveChanges();

                    //esto es para el manero del devexpress
                    e.Cancel = true;
                    this.ASPxGridView1.CancelEdit();
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);
                // conexion.Empresa.Remove(conexion.Empresa.Last() );

                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(fullErrorMessage, ex.EntityValidationErrors);
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            finally
            {
                //refescar los datos
                this.refreshData();
            }
        }
Exemple #14
0
        protected void ASPxGridViewEmisores_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            try
            {
                using (var conexion = new DataModelFE())
                {
                    string supervisor = Session["usuario"].ToString();
                    string emisor     = e.Values["identificacion"].ToString();

                    //busca objeto
                    object[] key          = new object[] { supervisor, emisor };
                    var      itemToRemove = conexion.Supervisor.Find(key);
                    conexion.Supervisor.Remove(itemToRemove);
                    conexion.SaveChanges();

                    //esto es para el manero del devexpress
                    e.Cancel = true;
                    this.ASPxGridViewEmisores.CancelEdit();
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);

                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(fullErrorMessage, ex.EntityValidationErrors);
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            finally
            {
                Page_Load(sender, e);
            }
        }
Exemple #15
0
        public void cargarProvincias()
        {
            ASPxPageControl tabs = (ASPxPageControl)ASPxGridView1.FindEditFormTemplateControl("pageControl");
            ASPxFormLayout  form = (ASPxFormLayout)tabs.FindControl("formLayoutUbicacion");

            /* PROVINCIA */
            ASPxComboBox comboProvincia = (ASPxComboBox)form.FindControl("cmbProvincia");

            comboProvincia.Items.Clear();

            using (var conexion = new DataModelFE())
            {
                foreach (var item in conexion.Ubicacion.
                         Select(x => new { x.codProvincia, x.nombreProvincia }).Distinct())
                {
                    comboProvincia.Items.Add(item.nombreProvincia, item.codProvincia);
                }
                comboProvincia.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
            }
        }
        /// <summary>
        /// carga solo una vez para ahorar tiempo
        /// </summary>
        private void cargarCombos()
        {
            /* ESTADO */
            GridViewDataComboBoxColumn comboEstado = this.ASPxGridView1.Columns["estado"] as GridViewDataComboBoxColumn;

            comboEstado.PropertiesComboBox.Items.Clear();
            comboEstado.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Estado)));

            /* ROL */
            GridViewDataComboBoxColumn comboRol = this.ASPxGridView1.Columns["rol"] as GridViewDataComboBoxColumn;

            comboRol.PropertiesComboBox.Items.Clear();
            using (var conexion = new DataModelFE())
            {
                foreach (var item in conexion.Rol.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    comboRol.PropertiesComboBox.Items.Add(item.descripcion, item.codigo);
                }
            }
            comboRol.PropertiesComboBox.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
        }
        /// <summary>
        /// carga solo una vez para ahorar tiempo
        /// </summary>
        private void loadComboBox()
        {
            using (var conexion = new DataModelFE())
            {
                /* MEDIO PAGO */
                foreach (var item in conexion.MedioPago.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    this.cmbMedioPago.Items.Add(item.descripcion, item.codigo);
                }
                this.cmbMedioPago.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
                this.cmbMedioPago.SelectedIndex            = 0;

                /* CONDICION VENTA */
                foreach (var item in conexion.CondicionVenta.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    this.cmbCondicionVenta.Items.Add(item.descripcion, item.codigo);
                }
                this.cmbCondicionVenta.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
                this.cmbCondicionVenta.SelectedIndex            = 0;
                this.txtPlazoCredito.Text = "0";

                /* TIPO MONEDA */
                foreach (var item in conexion.TipoMoneda.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    this.cmbTipoMoneda.Items.Add(item.descripcion, item.codigo);
                }
                this.cmbTipoMoneda.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
                this.cmbTipoMoneda.SelectedIndex            = 0;


                /* TIPO DOCUMENTO */

                foreach (var item in conexion.TipoDocumento.Where(x => x.estado == Estado.ACTIVO.ToString()).ToList())
                {
                    this.cmbTipoDocumento.Items.Add(item.descripcion, item.codigo);
                }
                this.cmbTipoDocumento.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
                this.cmbTipoDocumento.SelectedIndex            = 0;
            }
        }
Exemple #18
0
        public async Task <string> recepcionMesajeHacienda()
        {
            string responsePost = "";

            try
            {
                Thread.CurrentThread.CurrentCulture = Utilidades.getCulture();
                string xml = await Request.Content.ReadAsStringAsync();

                DocumentoElectronico documento = (DocumentoElectronico)EncodeXML.EncondeXML.getObjetcFromXML(xml);
                documento.verificaDatosParaXML();

                EmisorReceptorIMEC elEmisor = null;
                using (var conexion = new DataModelFE())
                {
                    elEmisor = conexion.EmisorReceptorIMEC.Find(documento.emisor.identificacion.numero);
                    if (elEmisor == null)
                    {
                        return("Emisor no registrado!!!");
                    }
                }
                responsePost = await ServicesHacienda.enviarDocumentoElectronico(false, documento, elEmisor, documento.tipoDocumento, Usuario.USUARIO_AUTOMATICO);
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);
                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);
                // Throw a new DbEntityValidationException with the improved exception message.
                return(fullErrorMessage);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return(responsePost);
        }
Exemple #19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="xmlFile">XML sin firmar</param>
        /// <param name="responsePost">respuesta del webs ervices</param>
        /// <param name="receptorTipoIdentificacion">tipoo identificacion del receptor</param>
        public static async Task <string> enviarMensajeReceptor(string xmlFile, EmisorReceptorIMEC emisor, string receptorTipoIdentificacion)
        {
            String responsePost = "";

            try
            {
                using (var conexion = new DataModelFE())
                {
                    string ambiente            = ConfigurationManager.AppSettings["ENVIROMENT"].ToString();
                    OAuth2.OAuth2Config config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault();
                    config.username = emisor.usernameOAuth2;
                    config.password = emisor.passwordOAuth2;

                    await OAuth2.OAuth2Config.getTokenWeb(config);

                    WSDomain.WSRecepcionPOST trama = new WSDomain.WSRecepcionPOST();
                    trama.clave = XMLUtils.buscarValorEtiquetaXML(XMLUtils.tipoDocumentoXML(xmlFile), "Clave", xmlFile);

                    trama.emisor.tipoIdentificacion   = emisor.identificacionTipo;
                    trama.emisor.numeroIdentificacion = XMLUtils.buscarValorEtiquetaXML("MensajeReceptor", "NumeroCedulaEmisor", xmlFile);

                    trama.receptor.tipoIdentificacion   = receptorTipoIdentificacion;
                    trama.receptor.numeroIdentificacion = XMLUtils.buscarValorEtiquetaXML("MensajeReceptor", "NumeroCedulaReceptor", xmlFile);

                    xmlFile = FirmaXML.getXMLFirmadoWeb(xmlFile, emisor.llaveCriptografica, emisor.claveLlaveCriptografica.ToString());

                    trama.consecutivoReceptor = XMLUtils.buscarValorEtiquetaXML(XMLUtils.tipoDocumentoXML(xmlFile), "NumeroConsecutivoReceptor", xmlFile);
                    trama.comprobanteXml      = EncodeXML.XMLUtils.base64Encode(xmlFile);

                    string jsonTrama = JsonConvert.SerializeObject(trama);

                    responsePost = await Services.postRecepcion(config.token, jsonTrama);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            return(responsePost);
        }
        /// <summary>
        /// inserta un registro nuevo
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
        {
            try
            {
                using (var conexion = new DataModelFE())
                {
                    //se declara el objeto a insertar
                    EmisorReceptorIMEC dato = new EmisorReceptorIMEC();
                    //llena el objeto con los valores de la pantalla
                    dato.identificacionTipo = e.NewValues["identificacionTipo"] != null ? e.NewValues["identificacionTipo"].ToString().ToUpper() : null;
                    dato.identificacion     = e.NewValues["identificacion"] != null ? e.NewValues["identificacion"].ToString().ToUpper() : null;

                    dato.nombre = e.NewValues["nombre"] != null ? e.NewValues["nombre"].ToString().ToUpper() : null;

                    dato.nombreComercial = e.NewValues["nombreComercial"] != null ? e.NewValues["nombreComercial"].ToString().ToUpper() : null;

                    dato.usuarioCreacion = Session["usuario"].ToString();
                    dato.fechaCreacion   = Date.DateTimeNow();

                    //agrega el objeto
                    conexion.EmisorReceptorIMEC.Add(dato);
                    conexion.SaveChanges();

                    //esto es para el manero del devexpress
                    e.Cancel = true;
                    this.ASPxGridView1.CancelEdit();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            finally
            {
                //refescar los datos
                this.refreshData();
            }
        }
Exemple #21
0
        protected void btnFirmar_Click(object sender, EventArgs e)
        {
            try
            {
                string xmlFile = Session["xmlFile"].ToString();

                EmisorReceptorIMEC dato = null;
                using (var conexion = new DataModelFE())
                {
                    string usuario = Session["usuario"].ToString();
                    dato = conexion.EmisorReceptorIMEC.Where(x => x.identificacion == usuario).FirstOrDefault();
                }

                string xmlFileSigned = FirmaXML.getXMLFirmadoWeb(xmlFile, dato.llaveCriptografica, dato.claveLlaveCriptografica.ToString());
                Session["xmlFile"] = xmlFileSigned;

                this.loadHTML();
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
        }
Exemple #22
0
        protected async void btnProbarUsuario_Click(object sender, EventArgs e)
        {
            using (var conexion = new DataModelFE())
            {
                string ambiente            = ConfigurationManager.AppSettings["ENVIROMENT"].ToString();
                OAuth2.OAuth2Config config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault();
                EmisorReceptorIMEC  emisor = (EmisorReceptorIMEC)Session["elEmisor"];
                config.username = emisor.usernameOAuth2;
                config.password = emisor.passwordOAuth2;

                await OAuth2.OAuth2Config.getTokenWeb(config);

                if (config.token.access_token != null)
                {
                    this.alertMessages.InnerText           = "Usuario configurado con éxito";
                    this.alertMessages.Attributes["class"] = "alert alert-info";
                }
                else
                {
                    this.alertMessages.InnerText           = "Usuario presenta errores, verificar configuración";
                    this.alertMessages.Attributes["class"] = "alert alert-danger";
                }
            }
        }
Exemple #23
0
        /// <summary>
        /// guardar el consecutivo utilizado
        /// </summary>
        protected void actualizarConsecutivo()
        {
            //genera el consecutivo del documento
            string emisor        = Session["emisor"].ToString();
            string sucursal      = ConsecutivoDocElectronico.DEFAULT_SUCURSAL;;
            string caja          = ConsecutivoDocElectronico.DEFAULT_CAJA;
            string tipoDocumento = "";

            if (this.cmbMensaje.Value.Equals(TipoConsecutivo.ACEPTADO.ToString()))
            {
                tipoDocumento = TipoConsecutivo.DOCUMENTO_ACEPTADO;
            }
            else
            {
                if (this.cmbMensaje.Value.Equals(TipoConsecutivo.RECHAZADO_PARCIAL.ToString()))
                {
                    tipoDocumento = TipoConsecutivo.DOCUMENTO_RECHAZADO_PARCIAL;
                }
                else
                {
                    tipoDocumento = TipoConsecutivo.DOCUMENTO_RECHAZADO;
                }
            }

            using (var conexion = new DataModelFE())
            {
                object[] key = new object[] { emisor, sucursal, caja, tipoDocumento };
                ConsecutivoDocElectronico consecutivo = conexion.ConsecutivoDocElectronico.Find(key);
                if (consecutivo != null)
                {
                    consecutivo.consecutivo          += 1;
                    conexion.Entry(consecutivo).State = EntityState.Modified;
                    conexion.SaveChanges();
                }
            }
        }
Exemple #24
0
        /// <summary>
        /// carga inicial de todos los registros
        /// </summary>
        private void refreshData()
        {
            double valor = 0;

            using (var conexion = new DataModelFE())
            {
                string          emisor = Session["emisor"].ToString();
                List <Comision> lista  = (from comision in conexion.Comision
                                          where comision.fechaPago >= txtFechaInicio.Date &&
                                          comision.fechaPago <= txtFechaFin.Date
                                          select comision
                                          ).ToList();

                foreach (var item in lista)
                {
                    valor += item.montoPago;
                }

                txtPagoComision1.Text    = (valor / 4).ToString();
                txtPagoComision2.Text    = (valor / 4).ToString();
                this.dgvDatos.DataSource = lista;
                this.dgvDatos.DataBind();
            }
        }
        /// <summary>
        /// carga solo una vez para ahorar tiempo
        /// </summary>
        private void loadComboBox()
        {
            using (var conexion = new DataModelFE())
            {
                /* ESTADO */
                GridViewDataComboBoxColumn comboEstado = this.ASPxGridView1.Columns["estado"] as GridViewDataComboBoxColumn;
                comboEstado.PropertiesComboBox.Items.Clear();
                comboEstado.PropertiesComboBox.Items.AddRange(Enum.GetValues(typeof(Estado)));

                /* IDENTIFICACION TIPO */
                foreach (var item in conexion.TipoIdentificacion.ToList())
                {
                    this.cmbEmisorTipo.Items.Add(item.descripcion, item.codigo);
                }
                this.cmbEmisorTipo.IncrementalFilteringMode = IncrementalFilteringMode.Contains;

                /* PROVINCIA*/
                foreach (var item in conexion.Ubicacion.Select(x => new { x.codProvincia, x.nombreProvincia }).Distinct())
                {
                    this.cmbEmisorProvincia.Items.Add(item.nombreProvincia, item.codProvincia);
                }
                this.cmbEmisorProvincia.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
            }
        }
        /// <summary>
        /// carga inicial de todos los registros
        /// </summary>
        private void refreshData()
        {
            using (var conexion = new DataModelFE())
            {
                string emisor = Session["emisor"].ToString();
                List <ResumenFacturaReceptor> lista = (from resumenFactura in conexion.ResumenFacturaReceptor
                                                       from recepcioDocumento in conexion.WSRecepcionPOSTReceptor
                                                       where recepcioDocumento.clave == resumenFactura.clave &&
                                                       recepcioDocumento.receptorIdentificacion == emisor &&
                                                       recepcioDocumento.fecha >= txtFechaInicio.Date &&
                                                       recepcioDocumento.fecha <= txtFechaFin.Date &&
                                                       recepcioDocumento.indEstado == 1
                                                       select resumenFactura
                                                       ).ToList();

                foreach (var item in lista)
                {
                    item.verificaTipoDocumentoCambioMoneda(this.chkCambioMoneda.Checked);
                }
                this.ASPxGridView1.DataSource = lista;

                this.ASPxGridView1.DataBind();
            }
        }
Exemple #27
0
        /// <summary>
        /// Se actualizan los mensajes del ministerio de hacienda que esten pendientes
        /// </summary>
        /// <returns></returns>
        public async Task <bool> actualizarMensajesHacienda()
        {
            try
            {
                EmisorReceptorIMEC  emisor = null;
                OAuth2.OAuth2Config config = null;
                Thread.CurrentThread.CurrentCulture = Utilidades.getCulture();

                using (var conexion = new DataModelFE())
                {
                    List <WSRecepcionPOST> lista = conexion.WSRecepcionPOST.
                                                   Where(x => x.indEstado == 0 /*ENVIADO*/ ||
                                                         x.indEstado == 8 /*RECIBIDO*/ ||
                                                         x.indEstado == 9  /*PENDIENTE  ||
                                                                            * x.comprobanteRespXML == null*/).ToList();
                    foreach (var item in lista)
                    {
                        if (config == null)
                        {
                            emisor = conexion.EmisorReceptorIMEC.Find(Usuario.USUARIO_TOKEN);
                            string ambiente = ConfigurationManager.AppSettings["ENVIROMENT"].ToString();
                            config          = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault();
                            config.username = emisor.usernameOAuth2;
                            config.password = emisor.passwordOAuth2;
                            await OAuth2.OAuth2Config.getTokenWeb(config);
                        }

                        string respuestaJSON = await Services.getRecepcion(config.token, item.clave);

                        if (!string.IsNullOrWhiteSpace(respuestaJSON))
                        {
                            WSRecepcionGET respuesta = JsonConvert.DeserializeObject <WSRecepcionGET>(respuestaJSON);
                            if (respuesta.respuestaXml != null)
                            {
                                string          respuestaXML    = EncodeXML.XMLUtils.base64Decode(respuesta.respuestaXml);
                                MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML);

                                using (var conexionWS = new DataModelFE())
                                {
                                    WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave);
                                    dato.mensaje             = mensajeHacienda.mensajeDetalle;
                                    dato.indEstado           = mensajeHacienda.mensaje;
                                    dato.fechaModificacion   = Date.DateTimeNow();
                                    dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO;
                                    dato.montoTotalFactura   = mensajeHacienda.montoTotalFactura;
                                    dato.montoTotalImpuesto  = mensajeHacienda.montoTotalImpuesto;
                                    dato.comprobanteRespXML  = respuestaXML;

                                    if (mensajeHacienda.montoTotalFactura == 0)
                                    {
                                        string xml = XMLUtils.base64Decode(dato.comprobanteXml);

                                        try
                                        {
                                            dato.montoTotalImpuesto = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalImpuesto", xml));
                                            dato.montoTotalFactura  = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalComprobante", xml));
                                        }
                                        catch (Exception ex)
                                        {
                                            dato.montoTotalImpuesto = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalImpuesto", xml).Replace(".", ","));
                                            dato.montoTotalFactura  = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalComprobante", xml).Replace(".", ","));
                                        }
                                    }

                                    conexionWS.Entry(dato).State = EntityState.Modified;
                                    conexionWS.SaveChanges();
                                }
                            }
                            else
                            {
                                if (respuesta.indEstado.Equals("recibido"))
                                {
                                    using (var conexionWS = new DataModelFE())
                                    {
                                        WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave);
                                        dato.indEstado               = 8 /*recibido por hacienda*/;
                                        dato.fechaModificacion       = Date.DateTimeNow();
                                        dato.usuarioModificacion     = Usuario.USUARIO_AUTOMATICO;
                                        conexionWS.Entry(dato).State = EntityState.Modified;
                                        conexionWS.SaveChanges();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                String data = e.Message;
            }
            return(true);
        }
Exemple #28
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tieneFirma">determina si el XML esta firmado o no</param>
        /// <param name="documento">puede ser cualquer tipo de documento electronico</param>
        /// <param name="responsePost">respuesta del webs ervices</param>
        /// <param name="tipoDocumento">Facura, Nota Crédito, Nota Débito</param>
        public static async Task <string> enviarDocumentoElectronico(bool tieneFirma, DocumentoElectronico documentoElectronico, EmisorReceptorIMEC emisor, string tipoDocumento, string usuario)
        {
            String responsePost = "";

            try
            {
                string xmlFile = EncodeXML.XMLUtils.getXMLFromObject(documentoElectronico);

                using (var conexion = new DataModelFE())
                {
                    string ambiente            = ConfigurationManager.AppSettings["ENVIROMENT"].ToString();
                    OAuth2.OAuth2Config config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault();
                    config.username = emisor.usernameOAuth2;
                    config.password = emisor.passwordOAuth2;

                    await OAuth2.OAuth2Config.getTokenWeb(config);

                    WSDomain.WSRecepcionPOST trama = new WSDomain.WSRecepcionPOST();
                    trama.clave = XMLUtils.buscarValorEtiquetaXML(XMLUtils.tipoDocumentoXML(xmlFile), "Clave", xmlFile);
                    trama.fecha = DateTime.ParseExact(XMLUtils.buscarValorEtiquetaXML(XMLUtils.tipoDocumentoXML(xmlFile), "FechaEmision", xmlFile), "yyyy-MM-ddTHH:mm:ss-06:00",
                                                      System.Globalization.CultureInfo.InvariantCulture);


                    string emisorIdentificacion = XMLUtils.buscarValorEtiquetaXML("Emisor", "Identificacion", xmlFile);
                    trama.emisor.tipoIdentificacion   = emisorIdentificacion.Substring(0, 2);
                    trama.emisor.numeroIdentificacion = emisorIdentificacion.Substring(2);
                    trama.emisorTipo           = trama.emisor.tipoIdentificacion;
                    trama.emisorIdentificacion = trama.emisor.numeroIdentificacion;

                    string receptorIdentificacion = XMLUtils.buscarValorEtiquetaXML("Receptor", "Identificacion", xmlFile);

                    if (!string.IsNullOrWhiteSpace(receptorIdentificacion))
                    {
                        trama.receptor.tipoIdentificacion   = receptorIdentificacion.Substring(0, 2);
                        trama.receptor.numeroIdentificacion = receptorIdentificacion.Substring(2);
                    }
                    else
                    {
                        trama.receptor.tipoIdentificacion   = "99";
                        trama.receptor.numeroIdentificacion = XMLUtils.buscarValorEtiquetaXML("Receptor", "IdentificacionExtranjero", xmlFile);
                    }

                    trama.receptorTipo           = trama.receptor.tipoIdentificacion;
                    trama.receptorIdentificacion = trama.receptor.numeroIdentificacion;
                    trama.tipoDocumento          = tipoDocumento;

                    //trama.callbackUrl = ConfigurationManager.AppSettings["ENVIROMENT_URL"].ToString();

                    if (!tieneFirma)
                    {
                        xmlFile = FirmaXML.getXMLFirmadoWeb(xmlFile, emisor.llaveCriptografica, emisor.claveLlaveCriptografica.ToString());
                    }
                    trama.consecutivoReceptor = null;
                    // SE CODIFICA ENVIO HACIENDA
                    trama.comprobanteXml = XMLUtils.base64Encode(xmlFile);

                    string jsonTrama = JsonConvert.SerializeObject(trama);

                    if (config.token.access_token != null)
                    {
                        responsePost = await Services.postRecepcion(config.token, jsonTrama);
                    }
                    else
                    {
                        // facturar guardada para envio en linea
                        trama.indEstado = 9;
                    }
                    // SE DECODIFICA PARA GUARDAR A BASE DE DATOS
                    trama.comprobanteXml = xmlFile;

                    WSRecepcionPOST tramaExiste = conexion.WSRecepcionPOST.Find(trama.clave);
                    documentoElectronico.resumenFactura.clave = documentoElectronico.clave;
                    trama.cargarEmisorReceptor();

                    if (tramaExiste != null)
                    {// si existe
                        trama.fechaModificacion           = Date.DateTimeNow();
                        trama.usuarioModificacion         = usuario;
                        trama.indEstado                   = 0;
                        conexion.Entry(tramaExiste).State = EntityState.Modified;

                        conexion.Entry(documentoElectronico.resumenFactura).State = EntityState.Modified;
                    }
                    else//si no existe
                    {
                        trama.fechaCreacion   = Date.DateTimeNow();
                        trama.usuarioCreacion = usuario;
                        conexion.WSRecepcionPOST.Add(trama);

                        conexion.ResumenFactura.Add(documentoElectronico.resumenFactura);

                        Plan plan = conexion.Plan.Find(emisor.identificacion);
                        if (plan != null)
                        {
                            plan.cantidadDocEmitido   += 1;
                            conexion.Entry(plan).State = EntityState.Modified;
                        }
                    }
                    conexion.SaveChanges();

                    //guarda la relacion de clientes asociados al emisor
                    Cliente cliente = conexion.Cliente.Where(x => x.emisor == trama.emisor.numeroIdentificacion).Where(x => x.receptor == trama.receptor.numeroIdentificacion).FirstOrDefault();
                    if (cliente == null && !string.IsNullOrWhiteSpace(trama.receptor.numeroIdentificacion))
                    {
                        cliente          = new Cliente();
                        cliente.emisor   = trama.emisor.numeroIdentificacion;
                        cliente.receptor = trama.receptor.numeroIdentificacion;
                        conexion.Cliente.Add(cliente);
                        conexion.SaveChanges();
                    }
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);
                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(fullErrorMessage, ex.EntityValidationErrors);
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            return(responsePost);
        }
Exemple #29
0
        /// <summary>
        /// Se actualizan los mensajes del ministerio de hacienda que esten pendientes
        /// </summary>
        /// <returns></returns>
        public async Task<bool> actualizarMensajesHacienda()
        {
            try
            {
                EmisorReceptorIMEC emisor = null;
                OAuth2.OAuth2Config config = null;

                using (var conexion = new DataModelFE())
                {
                    // se buscan los paquetes que esten enviados y esten esperando un respuesta de hacienda (indEstado == 8) o esten enviandas (indEstado == 0)
                    List<Models.WS.WSRecepcionPOST> lista = conexion.WSRecepcionPOST.Where(x => x.indEstado == 0 || x.indEstado == 8 ).ToList();
                    foreach (var item in lista)
                    {

                        if (config == null) { 
                            emisor = conexion.EmisorReceptorIMEC.Find(Usuario.USUARIO_TOKEN);
                            string ambiente = ConfigurationManager.AppSettings["ENVIROMENT"].ToString();
                            config = conexion.OAuth2Config.Where(x => x.enviroment == ambiente).FirstOrDefault();
                            config.username = emisor.usernameOAuth2;
                            config.password = emisor.passwordOAuth2;
                            await OAuth2.OAuth2Config.getTokenWeb(config);
                        }

                      string respuestaJSON = await ServicesHacienda.getRecepcion(config.token, item.clave);

                        if (!string.IsNullOrWhiteSpace(respuestaJSON))
                        {
                            WSRecepcionGET respuesta = JsonConvert.DeserializeObject<WSRecepcionGET>(respuestaJSON);
                            if (respuesta.respuestaXml != null)
                            {
                                string respuestaXML = EncodeXML.XMLUtils.base64Decode(respuesta.respuestaXml);
                                MensajeHacienda mensajeHacienda = new MensajeHacienda(respuestaXML);
                                  
                                using (var conexionWS = new DataModelFE())
                                {
                                    Models.WS.WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave);
                                    dato.mensaje = mensajeHacienda.mensajeDetalle;
                                    dato.indEstado = mensajeHacienda.mensaje;
                                    dato.fechaModificacion = Date.DateTimeNow();
                                    dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO;
                                    dato.montoTotalFactura = mensajeHacienda.montoTotalFactura;
                                    dato.montoTotalImpuesto = mensajeHacienda.montoTotalImpuesto;
                                    conexionWS.Entry(dato).State = EntityState.Modified;
                                    conexionWS.SaveChanges();

                                }
                            }
                            else
                            {
                                if (respuesta.indEstado.Equals("recibido"))
                                {
                                    using (var conexionWS = new DataModelFE())
                                    {
                                        Models.WS.WSRecepcionPOST dato = conexionWS.WSRecepcionPOST.Find(item.clave); 
                                        dato.indEstado = 8/*recibido por hacienda*/;
                                        dato.fechaModificacion = Date.DateTimeNow();
                                        dato.usuarioModificacion = Usuario.USUARIO_AUTOMATICO; 
                                        conexionWS.Entry(dato).State = EntityState.Modified;
                                        conexionWS.SaveChanges();

                                    }
                                }
                                 
                            }
                        }
                    } 
                } 
            }
            catch (Exception e)
            {
                String data = e.Message;
            }
            return true;
        }
Exemple #30
0
        public static string enviarProforma(ProformaElectronica documento, string tipoDocumento, string usuario)
        {
            String responsePostProforma = "";

            try
            {
                string xmlFile = EncodeXML.XMLUtils.getXMLFromObject(documento);

                using (var conexion = new DataModelFE())
                {
                    WSDomain.WSRecepcionPOSTProforma trama = new WSDomain.WSRecepcionPOSTProforma();
                    trama.clave = XMLUtils.buscarValorEtiquetaXML(XMLUtils.tipoDocumentoXML(xmlFile), "Clave", xmlFile);
                    trama.fecha = DateTime.ParseExact(XMLUtils.buscarValorEtiquetaXML(XMLUtils.tipoDocumentoXML(xmlFile), "FechaEmision", xmlFile), "yyyy-MM-ddTHH:mm:ss-06:00",
                                                      System.Globalization.CultureInfo.InvariantCulture);

                    string emisorIdentificacion = XMLUtils.buscarValorEtiquetaXML("Emisor", "Identificacion", xmlFile);
                    trama.emisor.tipoIdentificacion   = emisorIdentificacion.Substring(0, 2);
                    trama.emisor.numeroIdentificacion = emisorIdentificacion.Substring(2);
                    trama.emisorTipo           = trama.emisor.tipoIdentificacion;
                    trama.emisorIdentificacion = trama.emisor.numeroIdentificacion;

                    string receptorIdentificacion = XMLUtils.buscarValorEtiquetaXML("Receptor", "Identificacion", xmlFile);
                    if (!string.IsNullOrWhiteSpace(receptorIdentificacion))
                    {
                        trama.receptor.tipoIdentificacion   = receptorIdentificacion.Substring(0, 2);
                        trama.receptor.numeroIdentificacion = receptorIdentificacion.Substring(2);
                    }
                    else
                    {
                        trama.receptor.tipoIdentificacion   = "99";
                        trama.receptor.numeroIdentificacion = XMLUtils.buscarValorEtiquetaXML("Receptor", "IdentificacionExtranjero", xmlFile);
                    }

                    trama.montoTotalImpuesto     = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalImpuesto", xmlFile));
                    trama.montoTotalFactura      = Convert.ToDecimal(XMLUtils.buscarValorEtiquetaXML("ResumenFactura", "TotalComprobante", xmlFile));
                    trama.receptorTipo           = trama.receptor.tipoIdentificacion;
                    trama.receptorIdentificacion = trama.receptor.numeroIdentificacion;
                    trama.tipoDocumento          = tipoDocumento;
                    trama.consecutivoReceptor    = null;
                    trama.comprobanteXml         = xmlFile;
                    trama.indEstado = 1;
                    WSRecepcionPOSTProforma tramaExiste = conexion.WSRecepcionPOSTProforma.Find(trama.clave);

                    if (tramaExiste != null)
                    {// si existe
                        trama.fechaModificacion   = Date.DateTimeNow();
                        trama.usuarioModificacion = usuario;
                        trama.indEstado           = 1;
                        trama.cargarEmisorReceptor();
                        conexion.Entry(tramaExiste).State = EntityState.Modified;
                    }
                    else//si no existe
                    {
                        trama.fechaCreacion   = Date.DateTimeNow();
                        trama.usuarioCreacion = usuario;
                        trama.cargarEmisorReceptor();
                        conexion.WSRecepcionPOSTProforma.Add(trama);
                    }
                    conexion.SaveChanges();
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);
                // Throw a new DbEntityValidationException with the improved exception message.
                throw new DbEntityValidationException(fullErrorMessage, ex.EntityValidationErrors);
            }
            catch (Exception ex)
            {
                throw new Exception(Utilidades.validarExepcionSQL(ex), ex.InnerException);
            }
            return(responsePostProforma);
        }