/// <summary> /// Guarda la informacion del gasto al inventario /// </summary> /// <param name="gasto"></param> /// <returns></returns> public long Guardar(GastoInventarioInfo gasto) { long retValue; try { Logger.Info(); var gastoInventarioBL = new GastoInventarioBL(); retValue = gastoInventarioBL.Guardar(gasto); } catch (ExcepcionServicio) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(retValue); }
/// <summary> /// Guarda el gasto de inventario a la base de datos /// </summary> /// <param name="info"></param> /// <returns></returns> internal long Guardar(GastoInventarioInfo info) { long folioGasto; try { PolizaAbstract poliza; IList <PolizaInfo> listaPolizas; using (var transaction = new TransactionScope()) { Logger.Info(); info.TipoFolio = TipoFolio.GastoInventario; var dal = new GastoInventarioDAL(); int gastoInventarioID = dal.Guardar(info); GastoInventarioInfo gastoInventario = dal.ObtenerPorID(gastoInventarioID); if (gastoInventario == null) { return(0); } gastoInventario.CuentaGasto = info.CuentaGasto; gastoInventario.CentroCosto = info.CentroCosto; gastoInventario.Corral = info.Corral; gastoInventario.TotalCorrales = info.TotalCorrales; poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.GastosInventario); if (gastoInventario.Importe < 0) { poliza.Cancelacion = true; gastoInventario.Importe = Math.Abs(gastoInventario.Importe); } listaPolizas = poliza.GeneraPoliza(gastoInventario); var polizaDAL = new PolizaDAL(); listaPolizas.ToList().ForEach(datos => { datos.OrganizacionID = info.Organizacion.OrganizacionID; datos.UsuarioCreacionID = info.UsuarioId; datos.Activo = EstatusEnum.Activo; datos.ArchivoEnviadoServidor = 1; }); polizaDAL.CrearServicioPI(listaPolizas, TipoPoliza.GastosInventario); transaction.Complete(); folioGasto = gastoInventario.FolioGasto; } } catch (ExcepcionServicio) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(folioGasto); }
/// <summary> /// Metodo para almacenar el gasto al inventario /// </summary> /// <param name="gastoInventarioID"></param> public GastoInventarioInfo ObtenerPorID(int gastoInventarioID) { GastoInventarioInfo gastoInventario = null; try { Logger.Info(); var parameters = AuxGastoInventarioDAL.ObtenerParametrosObtenerPorID(gastoInventarioID); DataSet ds = Retrieve("GastoInventario_ObtenerPorID", parameters); if (ValidateDataSet(ds)) { gastoInventario = MapGastoInventarioDAL.ObtenerPorID(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(gastoInventario); }
/// <summary> /// Metodo para almacenar el gasto al inventario /// </summary> /// <param name="gasto"></param> public int Guardar(GastoInventarioInfo gasto) { int gastoInventarioID; try { Logger.Info(); var parameters = AuxGastoInventarioDAL.ObtenerParametrosGuardarGastoInventario(gasto); gastoInventarioID = Create("GastoInventario_GuardarGasto", parameters); } 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(gastoInventarioID); }
/// <summary> /// Método que obtiene un registro /// </summary> /// <param name="ds"></param> /// <returns></returns> internal static GastoInventarioInfo ObtenerPorID(DataSet ds) { try { Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; GastoInventarioInfo entidad = (from info in dt.AsEnumerable() select new GastoInventarioInfo { GastoInventarioID = info.Field <int>("GastoInventarioID"), Organizacion = new OrganizacionInfo { OrganizacionID = info.Field <int>("OrganizacionID"), Descripcion = info.Field <string>("Organizacion") }, TipoGasto = info.Field <string>("TipoGasto").TipoGastoAEnum(), FolioGasto = info.Field <long>("FolioGasto"), FechaGasto = info.Field <DateTime>("FechaGasto"), Costo = new CostoInfo { CostoID = info.Field <int>("CostoID"), Descripcion = info.Field <string>("Costo"), ClaveContable = info.Field <string>("ClaveContable") }, TieneCuenta = info.Field <bool>("TieneCuenta"), CuentaSAP = new CuentaSAPInfo { CuentaSAPID = info.Field <int?>("CuentaSAPID") != null ? info.Field <int>("CuentaSAPID") : 0, CuentaSAP = info.Field <string>("CuentaSAP"), Descripcion = info.Field <string>("DescripcionCuentaSAP") }, Proveedor = new ProveedorInfo { ProveedorID = info.Field <int?>("ProveedorID") != null ? info.Field <int>("ProveedorID") : 0, Descripcion = info.Field <string>("Proveedor"), CodigoSAP = info.Field <string>("CodigoSAP") }, Factura = info.Field <string>("Factura"), Importe = info.Field <decimal>("Importe"), IVA = info.Field <bool>("IVA"), Observaciones = info.Field <string>("Observaciones"), Retencion = info.Field <bool>("Retencion"), Activo = info.Field <bool>("Activo").BoolAEnum(), }).First(); return(entidad); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private IList <PolizaInfo> ObtenerPoliza(GastoInventarioInfo gastoInventario) { var polizasGastosInventario = new List <PolizaInfo>(); var costos = new List <int> { gastoInventario.Costo.CostoID }; var retencionBL = new RetencionBL(); var retenciones = retencionBL.ObtenerRetencionesConCosto(costos); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.GastosInventario.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.GastosInventario)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); //string numeroReferencia = ObtenerNumeroReferencia; string numeroReferencia = ObtenerNumeroReferenciaFolio(gastoInventario.FolioGasto); DateTime fecha = gastoInventario.FechaGasto; string archivoFolio = ObtenerArchivoFolio(fecha); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(gastoInventario.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } bool esProveedor = gastoInventario.Proveedor != null && gastoInventario.Proveedor.ProveedorID > 0; bool tieneRetencion = gastoInventario.Retencion; var renglon = 0; ClaveContableInfo claveContableInfo = ObtenerCuentaInventario(gastoInventario.Costo , gastoInventario.Organizacion.OrganizacionID , 0); CuentaSAPInfo cuentaSapProvision = null; if (!esProveedor) { cuentaSapProvision = cuentasSap.FirstOrDefault( clave => clave.CuentaSAPID == gastoInventario.CuentaSAP.CuentaSAPID); if (cuentaSapProvision == null) { cuentaSapProvision = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(gastoInventario.CuentaGasto, StringComparison.InvariantCultureIgnoreCase)); if (cuentaSapProvision == null) { throw new ExcepcionServicio( string.Format("No se encuentra configurada la cuenta de provisión, para el costo {0}", gastoInventario.Costo.Descripcion)); } } } string complementoConcepto; if (gastoInventario.Corral != null) { complementoConcepto = string.Format("Corral {0}", gastoInventario.Corral.Codigo); } else { complementoConcepto = string.Format("{0} Corrales", gastoInventario.TotalCorrales); } PolizaInfo polizaEntrada; if (esProveedor) { if (!gastoInventario.IVA && !tieneRetencion) { renglon++; var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), Division = organizacion.Division, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2") : (gastoInventario.Importe * -1).ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, Division = organizacion.Division, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } else { if (gastoInventario.IVA) { CuentaSAPInfo cuentaIva = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta)); if (cuentaIva == null) { throw new ExcepcionServicio(string.Format("No se encuentra configurada la cuenta de iva, para la organización.")); } renglon++; var importeIva = gastoInventario.Importe * (organizacion.Iva.TasaIva / 100); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (importeIva * -1).ToString("F2") : importeIva.ToString("F2")) , Renglon = Convert.ToString(renglon), ImporteIva = gastoInventario.Importe.ToString("F2"), ClaveImpuesto = ClaveImpuesto, CondicionImpuesto = CondicionImpuesto, IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar, Ref3 = ref3.ToString(), Division = organizacion.Division, Cuenta = organizacion.Iva.CuentaRecuperar.ClaveCuenta, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaIva.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe + importeIva).ToString("F2") : ((gastoInventario.Importe + importeIva) * -1).ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } if (tieneRetencion) { RetencionInfo retencion; if (retenciones != null && retenciones.Any()) { retencion = retenciones.Where( costo => costo.CostoID.Equals(gastoInventario.Costo.CostoID)). Select(ret => ret).FirstOrDefault(); if (retencion == null) { throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion)); } } else { throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion)); } var parametrosRetencion = new StringBuilder(); parametrosRetencion.Append(String.Format("{0}{1}" , retencion.IndicadorRetencion , retencion.TipoRetencion)); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, IndicadorImpuesto = parametrosRetencion.ToString(), Importe = string.Format("{0}{1}", Cancelacion ? string.Empty : "-", "0"), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), CodigoRetencion = retencion.IndicadorImpuesto, TipoRetencion = retencion.IndicadorRetencion, ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); if (!gastoInventario.IVA) { renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2") : (gastoInventario.Importe * -1).ToString("F2")) , Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } } } } else { renglon++; var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2") : (gastoInventario.Importe * -1).ToString("F2")), CentroCosto = gastoInventario.CentroCosto, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSapProvision.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSapProvision.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } return(polizasGastosInventario); }
public static Dictionary <string, object> ObtenerParametrosGuardarGastoInventario(GastoInventarioInfo info) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@OrganizacionId", info.Organizacion.OrganizacionID }, { "@TipoGasto", info.TipoGasto.ToString() }, { "@FechaGasto", info.FechaGasto }, { "@CostoId", info.Costo.CostoID }, { "@TieneCuenta", info.TieneCuenta }, { "@CuentaSAPId", info.CuentaSAP != null ? info.CuentaSAP.CuentaSAPID: 0 }, { "@ProveedorId", info.Proveedor != null ? info.Proveedor.ProveedorID : 0 }, { "@Importe", info.Importe }, { "@Observaciones", info.Observaciones }, { "@Factura", info.Factura }, { "@IVA", info.IVA }, { "@Retencion", info.Retencion }, { "@TipoFolio", info.TipoFolio.GetHashCode() }, { "@CorralId", info.Corral != null ? info.Corral.CorralID : 0 }, { "@Activo", info.Activo == EstatusEnum.Activo ? 1 : 0 }, { "@UsuarioId", info.UsuarioId }, { "@TotalCorrales", info.TotalCorrales }, { "@CentroCosto", info.CentroCosto }, { "@CuentaGasto", info.CuentaGasto }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }