Ejemplo n.º 1
0
        private CuentaGasto EnviarArchivoFTPInsertarBase(CuentaGasto cuentaGasto)
        {
            var request = new RecibeArchivoRequest()
            {
                Item             = cuentaGasto.ArchivoFisico,
                UsuarioEjecucion = "",
                Operacion        = TipoOperacionArchivo.Insertar
            };
            //hago llamado a NAS
            var ftp      = Util.ServicioFTPSoftrade();
            var response = ftp.OperacionArchivo(request);

            //TODO: calcular idTipoDocumento a CatalogosService
            cuentaGasto.ArchivoFisico = response.Item;
            var catalogos         = Util.ServicioCatalogos();
            var responseCatalogos =
                catalogos.ExtraerCatalogoItem(
                    RequestTipoDocumentoXAbreviatura(cuentaGasto.ArchivoFisico.ExtensionArchivo, cuentaGasto.IdUsuario));

            cuentaGasto.ArchivoFisico.IdTipoDocumento = responseCatalogos.Item.Id;
            //Aquí se hace la inserción a la tabla expediente digital
            cuentaGasto.ArchivoFisico = CuentaGastoRepositorio.InsertaExpedienteDigital(cuentaGasto.ArchivoFisico,
                                                                                        cuentaGasto.IdCuentaGasto, cuentaGasto.IdUsuario);
            return(cuentaGasto);
        }
 private void ValidarPedimento(CuentaGasto pedimento)
 {
     //TODO:Agregar otras validaciones a funcion validar pedimento
     if (pedimento.ArchivoFisico.LongitudArchivo != pedimento.ArchivoFisico.ArchivoBytes.Length)
     {
         throw new ArchivoCorruptoException();
     }
 }
Ejemplo n.º 3
0
        public CuentaGasto DameIdCuentaGastoExistente(CuentaGasto cuentaGasto)
        {
            List <SqlParameterItem> parametros = new List <SqlParameterItem>();

            parametros.Add(new SqlParameterItem("@pIdEmpresa", SqlDbType.Int, cuentaGasto.IdEmpresa));
            parametros.Add(new SqlParameterItem("@pRFCEmisor", SqlDbType.VarChar, 15, cuentaGasto.RFCEmisor));
            parametros.Add(new SqlParameterItem("@pNumeroFactura", SqlDbType.VarChar, 50, cuentaGasto.NumeroFactura));
            parametros.Add(new SqlParameterItem("@pID", SqlDbType.Int, 0, ParameterDirection.Output));
            InicializaConexion(cuentaGasto.IdEmpresa);
            helper.ExecuteNonQuery("usp_CuentaGasto_DameID", parametros);
            cuentaGasto.IdCuentaGasto = Convert.ToInt16(helper.GetParameterOutput("@pId"));
            return(cuentaGasto);
        }
        private Archivo ConvertirArchivo(CuentaGasto archivo)
        {
            var request = new Archivo()
            {
                ArchivoBytes      = archivo.ArchivoFisico.ArchivoBytes,
                TipoArchivoFiltro = TipoArchivo.XML,
                ExtensionArchivo  = archivo.ArchivoFisico.ExtensionArchivo,
                FechaSubida       = archivo.ArchivoFisico.FechaSubida,
                LongitudArchivo   = archivo.ArchivoFisico.LongitudArchivo,
                NombreArchivo     = archivo.ArchivoFisico.NombreArchivo,
                Patente           = archivo.ArchivoFisico.Patente,
                ExtensionData     = archivo.ArchivoFisico.ExtensionData,
                IdCliente         = archivo.ArchivoFisico.IdCliente
            };

            return(request);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Esta función inserta en la base de datos, los datos del CFDI además que
 /// envía al servidor FTP el archivo físico y guarda en base de datos en tabla expediente digital
 /// </summary>
 /// <param name="cfdi">Contiene el archivo físico y los datos del CFDI</param>
 /// <returns></returns>
 public CuentaGasto InsertaFactura(CuentaGasto cuentaGasto)
 {
     //using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required))
     {
         var cuentaGastoResponse = CuentaGastoRepositorio.DameIdCuentaGastoExistente(cuentaGasto);
         if (cuentaGastoResponse.IdCuentaGasto == 0)
         {
             //Inserta a la base de datos la cuenta de gasto y regresa una entidad cuenta gasto con el id
             cuentaGastoResponse = CuentaGastoRepositorio.InsertaFactura(cuentaGasto);
             //se envía uno por uno los impuestos a la base de datos
             InsertarImpuestos(cuentaGasto);
             //Se crea el request del NAS para enviarlo al Servicio FTP
             cuentaGasto = EnviarArchivoFTPInsertarBase(cuentaGasto);
         }
         //transaction.Complete();
         return(cuentaGastoResponse);
     }
 }
Ejemplo n.º 6
0
        public CuentaGasto ConvertirCfdIaCuentaGasto(CFDI cfdi)
        {
            var listaImpuestosTraslado  = CalcularImpuestoTraslado(cfdi.Comprobante.Impuestos.Traslados);
            var listaImpuestosRetencion = CalcularImpuestoRetencion(cfdi.Comprobante.Impuestos.Retenciones);
            var idMoneda = CatalogosRepositorio.ExtraerIdMonedaXAbreviatura(new BuscarCatalogo()
            {
                Alias = cfdi.Comprobante.Moneda
            });
            var idTipoComprobante = CatalogosRepositorio.ExtraerIdTipoComprobanteXNombreComprobante(new BuscarCatalogo()
            {
                Nombre = Convert.ToString(cfdi.Comprobante.tipoDeComprobante)
            });
            var cuentaGasto = new CuentaGasto()
            {
                IdEmpresa              = cfdi.IdEmpresa,
                IdPedimento            = cfdi.IdPedimento,
                NumeroFactura          = cfdi.Comprobante.noCertificado,
                OtrosDatos             = null,
                TimeStamp              = DateTime.Now,
                IdComplementoFacturaVW = 0,
                XML                 = cfdi.ArchivoFisico.NombreCompletoArchivo,
                PDF                 = null,
                IdMonedaVW          = idMoneda.Id,//método para buscar el tipo de moneda
                MontoTotal          = (double)cfdi.Comprobante.total,
                TipoCambio          = Convert.ToDouble(cfdi.Comprobante.TipoCambio),
                UUID                = cfdi.TimbreFiscalDigital.UUID,
                FechaFactura        = cfdi.Comprobante.fecha,
                Subtotal            = (double)cfdi.Comprobante.subTotal,
                IdTipoComprobanteVW = idTipoComprobante.Id,
                RFCEmisor           = cfdi.Comprobante.Emisor.rfc,
                NombreEmisor        = cfdi.Comprobante.Emisor.nombre,
                TrasladoImpuestos   = CalcularImpuestoTraslado(cfdi.Comprobante.Impuestos.Traslados),
                RetencionImpuestos  = CalcularImpuestoRetencion(cfdi.Comprobante.Impuestos.Retenciones),
                IVA                 = (double)TotalImpuesto(listaImpuestosTraslado, "IVA", true),
                IEPS                = (double)TotalImpuesto(listaImpuestosTraslado, "IEPS", true),
                RetencionIVA        = (double)TotalImpuesto(listaImpuestosRetencion, "", false),
                RetencionISR        = (double)TotalImpuesto(listaImpuestosRetencion, "", false),
                Confirmado          = false
            };

            return(cuentaGasto);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Funcion que inserta el base de datos la cuenta de gasto
 /// </summary>
 /// <param name="cuentaGasto"></param>
 /// <returns></returns>
 public CuentaGasto InsertaFactura(CuentaGasto cuentaGasto)
 {
     try
     {
         List <SqlParameterItem> parametros = new List <SqlParameterItem>();
         parametros.Add(new SqlParameterItem("@pIdEmpresa", SqlDbType.Int, cuentaGasto.IdEmpresa));
         parametros.Add(new SqlParameterItem("@pIdPedimento", SqlDbType.Int, cuentaGasto.IdPedimento));
         parametros.Add(new SqlParameterItem("@pNumeroFactura", SqlDbType.VarChar, 15, cuentaGasto.NumeroFactura));
         parametros.Add(new SqlParameterItem("@pOtrosDatos", SqlDbType.VarChar, 15, cuentaGasto.OtrosDatos));
         parametros.Add(new SqlParameterItem("@pIdComplementoFacturaVW ", SqlDbType.Int,
                                             cuentaGasto.IdComplementoFacturaVW));
         parametros.Add(new SqlParameterItem("@pXML", SqlDbType.VarChar, 100, cuentaGasto.XML));
         parametros.Add(new SqlParameterItem("@pPDF", SqlDbType.VarChar, 100, cuentaGasto.PDF));
         parametros.Add(new SqlParameterItem("@pIdMonedaVW", SqlDbType.Int, cuentaGasto.IdMonedaVW));
         parametros.Add(new SqlParameterItem("@pMontoTotal", SqlDbType.Decimal, cuentaGasto.MontoTotal));
         parametros.Add(new SqlParameterItem("@pTipoCambio", SqlDbType.Float, cuentaGasto.TipoCambio));
         parametros.Add(new SqlParameterItem("@pUUID", SqlDbType.VarChar, 35, cuentaGasto.UUID));
         parametros.Add(new SqlParameterItem("@pFechaFactura", SqlDbType.DateTime, cuentaGasto.FechaFactura));
         parametros.Add(new SqlParameterItem("@pSubtotal", SqlDbType.Decimal, cuentaGasto.Subtotal));
         parametros.Add(new SqlParameterItem("@pIdTipoComprobanteVW", SqlDbType.Int,
                                             cuentaGasto.IdTipoComprobanteVW));
         parametros.Add(new SqlParameterItem("@pRFCEmisor", SqlDbType.VarChar, 15, cuentaGasto.RFCEmisor));
         parametros.Add(new SqlParameterItem("@pNombreEmisor", SqlDbType.VarChar, 200, cuentaGasto.NombreEmisor));
         parametros.Add(new SqlParameterItem("@pIVA", SqlDbType.Decimal, cuentaGasto.IVA));
         parametros.Add(new SqlParameterItem("@pIEPS", SqlDbType.Decimal, cuentaGasto.IEPS));
         parametros.Add(new SqlParameterItem("@pRetencionIVA", SqlDbType.Decimal, cuentaGasto.RetencionIVA));
         parametros.Add(new SqlParameterItem("@pRetencionISR", SqlDbType.Decimal, cuentaGasto.RetencionISR));
         parametros.Add(new SqlParameterItem("@pConfirmado", SqlDbType.Bit, cuentaGasto.Confirmado));
         parametros.Add(new SqlParameterItem("@pID", SqlDbType.Int, 0, ParameterDirection.Output));
         //Se inicializa exactamente la conexión a la base de datos
         InicializarConexion(TipoBaseDatos.Softrade);
         helper.ExecuteNonQuery("usp_CuentaGasto_Inserta", parametros);
         cuentaGasto.IdCuentaGasto = Convert.ToInt16(helper.GetParameterOutput("@pID"));
         return(cuentaGasto);
     }
     catch (Exception e)
     {
         throw;
     }
 }
 public void InsertarImpuestos(CuentaGasto cuentaGasto)
 {
     if (cuentaGasto.RetencionImpuestos != null)
     {
         foreach (var VARIABLE in cuentaGasto.RetencionImpuestos)
         {
             CuentaGastoRepositorio.InsertaImpuestosRetencion(VARIABLE, cuentaGasto.IdCuentaGasto, cuentaGasto.IdEmpresa);
         }
     }
     if (cuentaGasto.TrasladoImpuestos != null)
     {
         foreach (var retencion in cuentaGasto.TrasladoImpuestos)
         {
             CuentaGastoRepositorio.InsertaImpuestosRetencion(retencion, cuentaGasto.IdCuentaGasto, cuentaGasto.IdEmpresa);
         }
     }
     if (cuentaGasto.DetalleCuentaGastos != null)
     {
         foreach (var retencion in cuentaGasto.DetalleCuentaGastos)
         {
             CuentaGastoRepositorio.InsertaDetalleCuentaGasto(retencion, cuentaGasto.IdEmpresa);
         }
     }
 }
Ejemplo n.º 9
0
        //public CuentaGasto GuardarDocumento(CuentaGasto cuentaGasto)
        //{
        //    ValidarPedimento(cuentaGasto);
        //    using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required))
        //    {
        //        //Se crea el request del NAS para enviarlo al Servicio FTP
        //        var request = new RecibeArchivoRequest()
        //        {
        //            EjecucionValida = false,
        //            Item = ConvertirArchivo(cuentaGasto),
        //            MensajeError = "",
        //            UsuarioEjecucion = ""
        //        };
        //        //hago llamado a NAS
        //        var ftp = ServicioFTPSoftrade();
        //        var response = ftp.OperacionArchivo(request);
        //        //TODO: calcular idTipoDocumento a CatalogosService
        //        var catalogos = ServicioCatalogos();
        //        var responseCatalogos = catalogos.ExtraerTipoDocumento(RequestTipoDocumentoXAbreviatura(cuentaGasto.ArchivoFisico.ExtensionArchivo, cuentaGasto.IdUsuario));
        //        cuentaGasto.ArchivoFisico.IdTipoDocumento = responseCatalogos.Item.Id;
        //        //Aquí se hace la inserción a la tabla expediente digital
        //        cuentaGasto.ArchivoFisico = CuentaGastoRepositorio.InsertaExpedienteDigital(cuentaGasto.ArchivoFisico,
        //            cuentaGasto.IdCuentaGasto, cuentaGasto.IdUsuario);
        //        cuentaGasto.ArchivoFisico.IdArchivo = response.Item.IdArchivo;
        //        cuentaGasto.ArchivoFisico = null;
        //        transaction.Complete();
        //        return cuentaGasto;
        //    }
        //}

        public CuentaGasto GetFactura(CuentaGasto cuentaGasto)
        {
            throw new NotImplementedException();
        }
Ejemplo n.º 10
0
 public IEnumerable <CuentaGasto> GetList(CuentaGasto cfdi)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Esta función inserta en la base de datos, los datos del CFDI además que
 /// envía al servidor FTP el archivo físico
 /// </summary>
 /// <param name="cfdi">Contiene el archivo físico y los datos del CFDI</param>
 /// <returns></returns>
 public CuentaGasto InsertaFactura(CFDI cfdi)
 {
     ValidarPedimento(cfdi);
     using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required))
     {
         var idMoneda = CatalogosRepositorio.ExtraerIdMonedaXAbreviatura(new BuscarCatalogo()
         {
             Alias = "MXP"
         });
         //var cuentaGasto = ConvertirCfdIaCuentaGasto(cfdi);
         var idTipoComprobante = CatalogosRepositorio.ExtraerIdTipoComprobanteXNombreComprobante(new BuscarCatalogo()
         {
             Nombre = "ingreso"
         });                                                 //Borrar
         var crearImpuestoTraslado  = CrearImpuestosDemo();  //Borrar
         var crearImpuestoRetencion = CrearImpuestosDemo2(); //Borrar
         var cuentaGasto            = new CuentaGasto()      //Borrar
         {
             IdEmpresa              = 2,
             IdPedimento            = 1,
             NumeroFactura          = "1234ASDF1234ASDF",
             OtrosDatos             = null,
             TimeStamp              = DateTime.Now,
             IdComplementoFacturaVW = 0,
             XML                 = "PathXML",
             PDF                 = null,
             IdMonedaVW          = idMoneda.Id,
             MontoTotal          = 10000,
             TipoCambio          = 15,
             UUID                = "1234ASDFASDFQER12334",
             FechaFactura        = DateTime.Now,
             Subtotal            = 9000,
             IdTipoComprobanteVW = idTipoComprobante.Id,
             RFCEmisor           = "RFC123456DFF",
             NombreEmisor        = "Nombre Emisor",
             TrasladoImpuestos   = CalcularImpuestoTraslado(crearImpuestoTraslado),
             RetencionImpuestos  = CalcularImpuestoRetencion(crearImpuestoRetencion),
             IVA                 = (double)TotalImpuesto(CalcularImpuestoTraslado(crearImpuestoTraslado), "IVA", true),
             IEPS                = (double)TotalImpuesto(CalcularImpuestoTraslado(crearImpuestoTraslado), "IEPS", true),
             RetencionIVA        = (double)TotalImpuesto(CalcularImpuestoTraslado(crearImpuestoTraslado), "", false),
             RetencionISR        = (double)TotalImpuesto(CalcularImpuestoTraslado(crearImpuestoTraslado), "", false),
             Confirmado          = false
         };
         //Inserta a la base de datos la cuenta de gasto y regresa una entidad cuenta gasto con el id
         var cuentaGastoResponse = CuentaGastoRepositorio.InsertaFactura(cuentaGasto);
         //se envía uno por uno los impuestos a la base de datos
         foreach (var VARIABLE in cuentaGasto.RetencionImpuestos)
         {
             CuentaGastoRepositorio.InsertaImpuestosRetencion(VARIABLE, cuentaGasto.IdCuentaGasto);
         }
         //Se crea el request del NAS para enviarlo al Servicio FTP
         var request = new RecibeArchivoRequest()
         {
             EjecucionValida  = false,
             Item             = ConvertirArchivo(cfdi),
             MensajeError     = "",
             UsuarioEjecucion = ""
         };
         //hago llamado a NAS
         var ftp      = ServicioFTPSoftrade();
         var response = ftp.OperacionArchivo(request);
         transaction.Complete();
         return(cuentaGastoResponse);
     }
 }