/// <summary> /// Genera la factura para las salidas de ganado en transito venta /// </summary> /// <param name="folio">el folio que se acava de registrar actualmente</param> /// <param name="activo">El SP valida que activo (Venta) sea igual a true</param> /// <returns>Regresa la informacion de la factura de la salida de ganado en transito por venta</returns> internal FacturaInfo SalidaGanadoTransito_ObtenerDatosFactura(int folio, bool activo) { FacturaInfo factura = null; try { Dictionary <string, object> parameters = AuxSalidaGanadoEnTransitoDAL.SalidaGanadoTransito_ObtenerDatosFactura(folio, activo); DataSet ds = Retrieve("SalidaGanadoTransito_ObtenerDatosFactura", parameters); if (ValidateDataSet(ds)) { factura = MapSalidaGanadoTransito.SalidaGanadoTransito_ObtenerDatosFactura(ds); } } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(factura); }
/// <summary> /// Obtiene los datos de la factura para generarla /// </summary> /// <param name="folioTicket"></param> /// <param name="organizacionId"> </param> /// <returns></returns> internal FacturaInfo ObtenerDatosFacturaVentaDeGanadoIntensivo(int folioTicket, int organizacionId) { FacturaInfo facturaInfo = null; try { Logger.Info(); Dictionary <string, object> parameters = AuxSalidaIndividualDAL.ObtenerParametrosObtenerDatosFacturaVentaDeGanado(folioTicket, organizacionId); DataSet ds = Retrieve("SalidaIndividualIntensivo_ObtenerDatosFactura", parameters); if (ValidateDataSet(ds)) { facturaInfo = MapSalidaIndividualDAL.ObtenerDatosFacturaSalidaIndividualIntensivo(ds); } } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(facturaInfo); }
/// <summary> /// Obtiene los datos de la factura para generarla /// </summary> /// <param name="salidaProducto"></param> /// <returns></returns> internal FacturaInfo ObtenerDatosFacturaPorFolioSalida(SalidaProductoInfo salidaProducto) { FacturaInfo producto = null; try { Dictionary <string, object> parameters = AuxSalidaProductoDAL.ObtenerParametrosObtenerDatosFacturaPorFolioSalida(salidaProducto); DataSet ds = Retrieve("SalidaProducto_ObtenerDatosFacturaPorFolioSalida", parameters); if (ValidateDataSet(ds)) { producto = MapSalidaProductoDAL.ObtenerDatosFacturaPorFolioSalida(ds); } } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(producto); }
internal FacturaInfo ObtenerDatosFacturaMuertesEnTransito(long folioMuerte, int organizacionID) { FacturaInfo facturaInfo = null; try { Logger.Info(); Dictionary <string, object> parameters = AuxMuertesEnTransitoDAL.ObtenerParametrosObtenerDatosFacturaMuertesEnTransito(folioMuerte, organizacionID); DataSet ds = Retrieve("MuertesEnTransito_ObtenerDatosFactura", parameters); if (ValidateDataSet(ds)) { facturaInfo = MapMuertesEnTransitoDAL.ObtenerDatosFacturaMuertesEnTransito(ds); } } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(facturaInfo); }
internal FacturaInfo SumaImportesTipoGanado(FacturaInfo FacturaFinal, ItemsFactura item) { FacturaFinal.ItemsFactura.ForEach(x => { if (x.LineNumber == item.LineNumber && x.Description == item.Description) { x.QuantityInvoiced = Convert.ToString(Convert.ToDecimal(x.QuantityInvoiced) + Convert.ToDecimal(item.QuantityInvoiced)); x.PrecioNeto = Convert.ToString(Convert.ToDecimal(x.PrecioNeto) + Convert.ToDecimal(item.PrecioNeto)); x.CantidadBultos = Convert.ToString(Convert.ToDecimal(x.CantidadBultos) + Convert.ToDecimal(item.CantidadBultos)); } }); return FacturaFinal; }
/// <summary> /// Genera el xml de la factura de sacrificio /// </summary> /// <param name="loteSacrificioInfo"></param> internal List<ItemsFactura> AgrupaFacturaTotales(List<FacturaInfo> facturasInfo) { FacturaInfo facturaFinal = new FacturaInfo(); //bool guardaCabecero = true; List<ItemsFactura> items = new List<ItemsFactura>(); foreach (var facturaInfo in facturasInfo) { foreach (ItemsFactura item in facturaInfo.ItemsFactura) { items.Add(item); } } String tipoGanado = String.Empty; int linea = 0; facturaFinal.ItemsFactura = new List<ItemsFactura>(); items.OrderBy(x => x.Description).ThenBy(c => c.LineNumber).ToList().ForEach(a => { if (tipoGanado == a.Description) { if (Convert.ToInt16(a.LineNumber) == linea) { facturaFinal = SumaImportesTipoGanado(facturaFinal, a); } else { facturaFinal.ItemsFactura.Add(a); tipoGanado = a.Description; linea = Convert.ToInt16(a.LineNumber); } } else { facturaFinal.ItemsFactura.Add(a); tipoGanado = a.Description; linea = Convert.ToInt16(a.LineNumber); } }); decimal unit; facturaFinal.ItemsFactura.ForEach(f => { unit = Convert.ToDecimal(f.PrecioNeto) / Convert.ToDecimal(f.QuantityInvoiced); f.UnitSellingPrice = Convert.ToString(Math.Round(unit,4)); }); return facturaFinal.ItemsFactura; }
/// <summary> /// Obtiene la lista de facturas por campaña y por nit de un cliente. /// </summary> /// <param name="Campana"></param> /// <param name="Nit"></param> /// <returns></returns> public List <FacturaInfo> ListFacturasxCampanaxNit(string Campana, string Nit) { db.SetParameterValue(commandFactura, "i_operation", 'S'); db.SetParameterValue(commandFactura, "i_option", 'C'); db.SetParameterValue(commandFactura, "i_campana", Campana); db.SetParameterValue(commandFactura, "i_nit", Nit); List <FacturaInfo> col = new List <FacturaInfo>(); IDataReader dr = null; FacturaInfo m = null; try { dr = db.ExecuteReader(commandFactura); while (dr.Read()) { m = Factory.GetFactura(dr); col.Add(m); } } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name)); bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy"); if (rethrow) { throw; } } finally { if (dr != null) { dr.Close(); } } return(col); }
/// <summary> /// Genera el xml de la factura de sacrificio /// </summary> /// <param name="loteSacrificioInfo"></param> internal void GenerarDatosFacturaSacrificio(LoteSacrificioInfo loteSacrificioInfo) { try { Logger.Info(); var loteSacrificioDAL = new LoteSacrificioDAL(); var listaFactura = loteSacrificioDAL.ObtenerDatosFacturaPorOrdenSacrificio(loteSacrificioInfo); List<FacturaInfo> facturas = new List<FacturaInfo>(); FacturaInfo facturaFinal = new FacturaInfo(); if (listaFactura != null) { foreach (var facturaInfo in listaFactura) { facturas.Add(facturaInfo); } facturaFinal.Serie = listaFactura.FirstOrDefault().Serie; facturaFinal.TrxNumber = listaFactura.FirstOrDefault().TrxNumber; facturaFinal.FechaFactura = listaFactura.FirstOrDefault().FechaFactura; facturaFinal.DatosCliente = listaFactura.FirstOrDefault().DatosCliente; facturaFinal.DatosDeEnvio = listaFactura.FirstOrDefault().DatosDeEnvio; facturaFinal = ObtenerDatosDeConfiguracionSinSerieFolio(facturaFinal, loteSacrificioInfo.OrganizacionId); facturaFinal.ItemsFactura = AgrupaFacturaTotales(facturas); GenerarFactura(facturaFinal, loteSacrificioInfo.OrganizacionId); } } catch (ExcepcionServicio) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
internal FacturaInfo ObtenerDatosDeFacturacionSalidaVentaTransito(FacturaInfo facturaInfo, int organizacionId) { try { Logger.Info(); if (facturaInfo != null) { var parametrosBl = new ParametroOrganizacionBL(); var ruta = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.RutaCFDI.ToString()); if (ruta != null) { var parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SerieFactura.ToString()); if (parametroInfo != null) { parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SELLER_ID.ToString()); if (parametroInfo != null) { facturaInfo.SellerId = parametroInfo.Valor; parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.SHIP_FROM.ToString()); if (parametroInfo != null) { facturaInfo.ShipFrom = parametroInfo.Valor; facturaInfo.BuyerId = facturaInfo.DatosCliente.PartyId; facturaInfo.ShipTo = facturaInfo.DatosCliente.PartyId; } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorParametros); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorParametros); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorFolioFactura); } } else { throw new ExcepcionServicio(Properties.ResourceServices.FacturaElectronica_MensajeErrorSerie); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorAlConsultarDatos); } return facturaInfo; } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Genera la factura en la ruta especificada /// </summary> /// <param name="datosFactura"></param> /// <param name="organizacionId"></param> internal void GenerarFactura(FacturaInfo datosFactura, int organizacionId) { var doc = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "")); try { var parametrosBl = new ParametroOrganizacionBL(); var parametroInfo = parametrosBl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.RutaCFDI.ToString()); if (parametroInfo != null) { string rutaRepositorio = parametroInfo.Valor; if (datosFactura != null && rutaRepositorio != "") { doc.Add( new XElement("TRANSACTIONS", new XAttribute("EMITER", "VIZ-MPEIRO"), new XElement("TRANSACTION", new XElement("SERIE", datosFactura.Serie), new XElement("TRX_NUMBER", datosFactura.TrxNumber), new XElement("CUST_TRX_TYPE_ID", datosFactura.TipoCliente), new XElement("TRX_DATE", datosFactura.FechaFactura), new XElement("BILL_TO_CUSTOMER", new XElement("PARTY", new XElement("CODIGO_CLIENTE", datosFactura.DatosDeEnvio.CodigoCliente), new XElement("PARTY_ID", datosFactura.DatosDeEnvio.PartyId), datosFactura.DatosDeEnvio.Nombre == null ? new XElement("PARTY_NAME") : new XElement("PARTY_NAME", new XCData(datosFactura.DatosDeEnvio.Nombre)), new XElement("PARTY_TYPE", datosFactura.DatosDeEnvio.PartyType), datosFactura.DatosDeEnvio.CodigoFiscal == null ? new XElement("JGZZ_FISCAL_CODE") : new XElement("JGZZ_FISCAL_CODE", new XCData(datosFactura.DatosDeEnvio.CodigoFiscal)), datosFactura.DatosDeEnvio.Direccion1 == null ? new XElement("ADDRESS1") : new XElement("ADDRESS1", new XCData(datosFactura.DatosDeEnvio.Direccion1)), datosFactura.DatosDeEnvio.Direccion2 == null ? new XElement("ADDRESS2") : new XElement("ADDRESS2", new XCData(datosFactura.DatosDeEnvio.Direccion2)), datosFactura.DatosDeEnvio.Direccion3 == null ? new XElement("ADDRESS3") : new XElement("ADDRESS3", new XCData(datosFactura.DatosDeEnvio.Direccion3)), datosFactura.DatosDeEnvio.Direccion4 == null ? new XElement("ADDRESS4") : new XElement("ADDRESS4", new XCData(datosFactura.DatosDeEnvio.Direccion4)), new XElement("POSTAL_CODE", datosFactura.DatosDeEnvio.CodigoPostal), datosFactura.DatosDeEnvio.Ciudad == null ? new XElement("CITY") : new XElement("CITY", new XCData(datosFactura.DatosDeEnvio.Ciudad)), datosFactura.DatosDeEnvio.Estado == null ? new XElement("STATE") : new XElement("STATE", new XCData(datosFactura.DatosDeEnvio.Estado)), datosFactura.DatosDeEnvio.Pais == null ? new XElement("COUNTRY") : new XElement("COUNTRY", new XCData(datosFactura.DatosDeEnvio.Pais)), new XElement("METODO_PAGO", datosFactura.DatosCliente.MetodoDePago), new XElement("COND_PAGO", datosFactura.DatosCliente.CondicionDePago), new XElement("DIAS_PAGO", datosFactura.DatosCliente.DiasDePago) ) ), new XElement("TIPO_MONEDA", datosFactura.TipoMoneda), new XElement("TASA_DE_CAMBIO", datosFactura.TasaDeCambio), new XElement("SELLER_ID", datosFactura.SellerId), new XElement("BUYER_ID", datosFactura.BuyerId), new XElement("SHIP_FROM", datosFactura.ShipFrom), new XElement("SHIP_TO", datosFactura.ShipTo), new XElement("ACCOUNT_NUMBER", datosFactura.NumeroDeCuenta), new XElement("SHIP_TO_CUSTOMER", new XElement("PARTY", new XElement("CODIGO_CLIENTE", datosFactura.DatosDeEnvio.CodigoCliente), new XElement("PARTY_ID", datosFactura.DatosDeEnvio.PartyId), datosFactura.DatosDeEnvio.Nombre == null ? new XElement("PARTY_NAME", "") : new XElement("PARTY_NAME", new XCData(datosFactura.DatosDeEnvio.Nombre)), new XElement("PARTY_TYPE", datosFactura.DatosDeEnvio.PartyType), datosFactura.DatosDeEnvio.CodigoFiscal == null ? new XElement("JGZZ_FISCAL_CODE") : new XElement("JGZZ_FISCAL_CODE", new XCData(datosFactura.DatosDeEnvio.CodigoFiscal)), datosFactura.DatosDeEnvio.Direccion1 == null ? new XElement("ADDRESS1") : new XElement("ADDRESS1", new XCData(datosFactura.DatosDeEnvio.Direccion1)), datosFactura.DatosDeEnvio.Direccion2 == null ? new XElement("ADDRESS2") : new XElement("ADDRESS2", new XCData(datosFactura.DatosDeEnvio.Direccion2)), datosFactura.DatosDeEnvio.Direccion3 == null ? new XElement("ADDRESS3") : new XElement("ADDRESS3", new XCData(datosFactura.DatosDeEnvio.Direccion3)), datosFactura.DatosDeEnvio.Direccion4 == null ? new XElement("ADDRESS4") : new XElement("ADDRESS4", new XCData(datosFactura.DatosDeEnvio.Direccion4)), new XElement("POSTAL_CODE", datosFactura.DatosDeEnvio.CodigoPostal), datosFactura.DatosDeEnvio.Ciudad == null ? new XElement("CITY") : new XElement("CITY", new XCData(datosFactura.DatosDeEnvio.Ciudad)), datosFactura.DatosDeEnvio.Estado == null ? new XElement("STATE") : new XElement("STATE", new XCData(datosFactura.DatosDeEnvio.Estado)), datosFactura.DatosDeEnvio.Pais == null ? new XElement("COUNTRY") : new XElement("COUNTRY", new XCData(datosFactura.DatosDeEnvio.Pais)) ) ), new XElement("STATUS_FACTURA", datosFactura.EstatusFactura), new XElement("TRANSACTION_LINES", from transaction in datosFactura.ItemsFactura select new XElement("TRANSACTION_LINE", new XElement("LINE_NUMBER", transaction.LineNumber), new XElement("LINE_TYPE", transaction.LineType), new XElement("INVENTORY_ITEM_ID", transaction.InventoryItemId), new XElement("ITEM_EAN_NUMBER", transaction.ItemEanNumber), new XElement("SERIAL", transaction.Serial), new XElement("DESCRIPTION", new XCData(transaction.Description)), new XElement("QUANTITY_INVOICED", transaction.QuantityInvoiced), new XElement("QUANTITY_CREDITED", transaction.QuantityCredited), new XElement("UNIT_SELLING_PRICE", transaction.UnitSellingPrice), new XElement("UOM_CODE", transaction.UomCode), new XElement("TAX_RATE", transaction.TaxRate), new XElement("TAXABLE_AMOUNT", transaction.TaxableAmount), new XElement("PRECIO_NETO", transaction.PrecioNeto), new XElement("DESCUENTO", transaction.Descuento), new XElement("VAT_TAX_ID", transaction.VatTaxId), new XElement("CANTIDAD_BULTOS", transaction.CantidadBultos) ) ), new XElement("ADDENDA", new XAttribute("TYPE", "NONE")), new XElement("COMPLEMENTO", new XAttribute("TYPE", "NONE")), new XElement("IMPRESION", new XAttribute("ORIGINAL", "1"), new XAttribute("PREFACTURA", "0"), new XAttribute("BN", "false"), new XAttribute("PRINTER", "2")), new XElement("PRINTER", new XAttribute("ROUTE", "Finanzas FE")) ) ) ); } if (Directory.Exists(rutaRepositorio)) { string nombreCompleto = String.Format("{0}\\{1}", rutaRepositorio, datosFactura.NombreFactura); doc.Save(nombreCompleto); } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorDirectorioNoExiste); } } else { throw new ExcepcionServicio( Properties.ResourceServices.FacturaElectronica_MensajeErrorRutaXml); } } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }