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(); } }
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); }
/// <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); } }
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); }
/// <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); } } }
//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(); }
public IEnumerable <CuentaGasto> GetList(CuentaGasto cfdi) { throw new NotImplementedException(); }
/// <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); } }