/// <summary> /// Metodo para Guardar/Modificar una entidad Retencion /// </summary> /// <param name="info">Representa la entidad que se va a grabar</param> public void Guardar(RetencionInfo info) { try { Logger.Info(); var tRetencionBL = new RetencionBL(); tRetencionBL.Guardar(info); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una lista de Retencion filtrando por el estatus Activo = 1, Inactivo = 0 /// </summary> /// <returns></returns> public IList <RetencionInfo> ObtenerTodos(EstatusEnum estatus) { try { Logger.Info(); var retencionBL = new RetencionBL(); IList <RetencionInfo> result = retencionBL.ObtenerTodos(estatus); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <RetencionInfo> ObtenerPorPagina(PaginacionInfo pagina, RetencionInfo filtro) { try { Logger.Info(); var retencionBL = new RetencionBL(); ResultadoInfo <RetencionInfo> result = retencionBL.ObtenerPorPagina(pagina, filtro); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una entidad Retencion por su Id /// </summary> /// <param name="retencionID"></param> /// <returns></returns> public RetencionInfo ObtenerPorID(int retencionID) { try { Logger.Info(); var retencionBL = new RetencionBL(); RetencionInfo result = retencionBL.ObtenerPorID(retencionID); return(result); } catch (ExcepcionGenerica) { throw; } 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); }
private IList <PolizaInfo> ObtenerPoliza(DistribucionDeIngredientesInfo distribucionIngredientes) { var polizaPremezcla = new List <PolizaInfo>(); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); IList <UnidadMedicionInfo> unidadesMedicion = ObtenerUnidadesMedicion(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.PolizaPremezcla.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.PolizaPremezcla)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var renglon = 0; int milisegundo = DateTime.Now.Millisecond; ProductoInfo producto = distribucionIngredientes.Producto; DateTime fecha = distribucionIngredientes.FechaEntrada; int folio = producto.ProductoId; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append(Convert.ToString(folio).PadLeft(10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(milisegundo); ref3.Append(postFijoRef3); var almacenMovimientoBL = new AlmacenMovimientoBL(); string archivoFolio = ObtenerArchivoFolio(fecha); //string numeroReferencia = ObtenerNumeroReferencia; List <DistribucionDeIngredientesOrganizacionInfo> organizaciones = distribucionIngredientes.ListaOrganizaciones; DistribucionDeIngredientesOrganizacionInfo organizacionDistribucion; ClaseCostoProductoInfo claseCostoProducto; CuentaAlmacenSubFamiliaInfo almacenesSubFamilia; CuentaSAPInfo cuentaSap; PolizaInfo poliza; DatosPolizaInfo datos; bool tieneIva = distribucionIngredientes.Iva == 1; bool costosTienenIva = distribucionIngredientes.ListaPremezclaDistribucionCosto.Any(tieneIVA => tieneIVA.Iva); string unidad = unidadesMedicion.Where(clave => clave.UnidadID == producto.UnidadId).Select(uni => uni.ClaveUnidad). FirstOrDefault(); OrganizacionInfo organizacion = null; decimal totalIva = 0; /* Se calcula el costo extra y se proratea entre las organizaciones*/ decimal costoTotal = 0; decimal costoUnitario = 0; organizaciones = organizaciones.Where(cant => cant.CantidadSurtir > 0 || cant.CantidadNueva > 0).ToList(); int cantidad; string numeroReferencia = string.Empty; for (var indexOrganizaciones = 0; indexOrganizaciones < organizaciones.Count; indexOrganizaciones++) //Polizas por organizacion { organizacionDistribucion = organizaciones[indexOrganizaciones]; AlmacenMovimientoInfo movimientoGenerado = almacenMovimientoBL.ObtenerPorId(organizacionDistribucion.AlmaceMovimiento.AlmacenMovimientoID); numeroReferencia = ObtenerNumeroReferenciaFolio(movimientoGenerado.FolioMovimiento); cuentaSap = null; if (organizacionDistribucion.Lote.AlmacenInventario.Almacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || organizacionDistribucion.Lote.AlmacenInventario.Almacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode()) { IList <CuentaAlmacenSubFamiliaInfo> cuentasAlmacenSubFamilia = ObtenerCostosSubFamilia(organizacionDistribucion.Lote.AlmacenInventario.Almacen.AlmacenID); almacenesSubFamilia = cuentasAlmacenSubFamilia.FirstOrDefault(sub => sub.SubFamiliaID == producto.SubfamiliaId); if (almacenesSubFamilia != null) { cuentaSap = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenesSubFamilia.CuentaSAPID); } } else { IList <ClaseCostoProductoInfo> claseCostosProductos = ObtenerCostosProducto(organizacionDistribucion.Lote.AlmacenInventario.Almacen.AlmacenID); claseCostoProducto = claseCostosProductos.FirstOrDefault(prod => prod.ProductoID == producto.ProductoId); if (claseCostoProducto != null) { cuentaSap = cuentasSap.FirstOrDefault(clave => clave.CuentaSAPID == claseCostoProducto.CuentaSAPID); } } if (cuentaSap == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO HAY CONFIGURACION PARA EL PRODUCTO", producto.Descripcion)); } organizacion = ObtenerOrganizacionIVA(organizacionDistribucion.Organizacion.OrganizacionID); cantidad = organizacionDistribucion.CantidadSurtir; if (cantidad == 0) { cantidad = organizacionDistribucion.CantidadNueva; } if (distribucionIngredientes.ListaOrganizaciones.Any()) { costoTotal = distribucionIngredientes.ListaPremezclaDistribucionCosto.Sum(c => c.Importe); costoUnitario = costoTotal / distribucionIngredientes.CantidadTotal; } //Polizas de Cargo por Organizacion datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", (organizacionDistribucion.CostoTotal + (costoUnitario * organizacionDistribucion.CantidadSurtir)).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSap.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSap.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(organizacionDistribucion.CantidadSurtir), 2), Division = organizacion.Division, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, cantidad.ToString("F0"), unidad, producto.Descripcion, (organizacionDistribucion.CostoTotal).ToString("F2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); //Si el cabecero tiene IVA o los costos tienen iva, crea una linea de iva por organizacion en la poliza if (tieneIva || costosTienenIva) { decimal importeIva = tieneIva? organizacionDistribucion.CostoTotal * (organizacion.Iva.TasaIva / 100):0; totalIva += importeIva; CuentaSAPInfo cuentaIva = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta)); if (cuentaIva == null) { throw new ExcepcionServicio( string.Format("CUENTA DE IVA NO CONFIGURADA PARA LA ORGANIZACION {0}", organizacion.Descripcion)); } decimal porcientoOrg = (decimal)organizacionDistribucion.CantidadSurtir / (decimal)distribucionIngredientes.CantidadTotal; var totalCostosIva = costosTienenIva? distribucionIngredientes.ListaPremezclaDistribucionCosto.Where(iva => iva.Iva).Sum(sumIva => sumIva.Importe * (organizacion.Iva.TasaIva / 100)):0; decimal porcientoIva = totalCostosIva * porcientoOrg; var totalImporteCostosIva = costosTienenIva ? distribucionIngredientes.ListaPremezclaDistribucionCosto.Where(iva => iva.Iva) .Sum(sumIva => sumIva.Importe) : 0; var porcentajeImporteCostosIva = costosTienenIva ? totalImporteCostosIva * porcientoOrg : 0; //Poliza de Iva de importe + Iva de costos var importeIVA = costosTienenIva && tieneIva ? (organizacionDistribucion.CostoTotal + porcentajeImporteCostosIva) : (costosTienenIva && !tieneIva) ? porcentajeImporteCostosIva : (!costosTienenIva && tieneIva) ? organizacionDistribucion.CostoTotal : 0; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", (importeIva + porcientoIva).ToString("F2")), IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar, Renglon = Convert.ToString(++renglon), ImporteIva = (importeIVA).ToString("F2"), Ref3 = ref3.ToString(), Cuenta = cuentaIva.CuentaSAP, ClaveImpuesto = ClaveImpuesto, CondicionImpuesto = CondicionImpuesto, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaIva.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(organizacionDistribucion.CantidadSurtir), 2), Division = organizacion.Division, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, cantidad.ToString("F0"), unidad, producto.Descripcion, (organizacionDistribucion.CostoTotal).ToString("F2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); //Poliza de Costo de la distribucion por organizacion mas IVA pagada al proveedor datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", ((importeIva + organizacionDistribucion.CostoTotal) * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++renglon), ImporteIva = String.Empty, Ref3 = ref3.ToString(), ClaveProveedor = distribucionIngredientes.Proveedor.CodigoSAP, ClaveImpuesto = ClaveImpuesto, CondicionImpuesto = CondicionImpuesto, ArchivoFolio = archivoFolio, DescripcionCosto = distribucionIngredientes.Proveedor.CodigoSAP, PesoOrigen = Math.Round(Convert.ToDecimal(organizacionDistribucion.CantidadSurtir), 2), Division = organizacion.Division, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, cantidad.ToString("F0"), unidad, producto.Descripcion, (organizacionDistribucion.CostoTotal).ToString("F2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); } IList <int> costosConRetencion = distribucionIngredientes.ListaPremezclaDistribucionCosto.Where(x => x.Retencion) .Select(x => x.Costo.CostoID) .ToList(); foreach (var costo in distribucionIngredientes.ListaPremezclaDistribucionCosto) { if (costo.Retencion) { var retencionBL = new RetencionBL(); var retenciones = retencionBL.ObtenerRetencionesConCosto(costosConRetencion); RetencionInfo retencion = null; if (retenciones != null && retenciones.Any()) { retencion = retenciones.FirstOrDefault( costoRet => costoRet.CostoID == costo.Costo.CostoID); } if (retencion != null) { if (!costo.Iva) { renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia.ToString(), FechaEntrada = distribucionIngredientes.FechaEntrada, Folio = numeroReferencia, Division = organizacion.Division, ClaveProveedor = costo.Proveedor.CodigoSAP, Importe = string.Format("{0}", (costo.Importe * -1).ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio.ToString(), DescripcionCosto = costo.Proveedor.Descripcion, PesoOrigen = organizacionDistribucion.CantidadSurtir, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, organizacionDistribucion.CantidadExistente.ToString("N0"), unidad, costo.Costo.Descripcion, costoUnitario.ToString("N2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); } var parametrosRetencion = new StringBuilder(); parametrosRetencion.Append(String.Format("{0}{1}" , retencion.IndicadorRetencion , retencion.TipoRetencion)); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia.ToString(), FechaEntrada = distribucionIngredientes.FechaEntrada, Folio = numeroReferencia, Division = organizacion.Division, ClaveProveedor = costo.Proveedor.CodigoSAP, Importe = string.Format("-{0}", "0"), IndicadorImpuesto = parametrosRetencion.ToString(), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), CodigoRetencion = retencion.IndicadorImpuesto, TipoRetencion = retencion.IndicadorRetencion, ArchivoFolio = archivoFolio.ToString(), DescripcionCosto = costo.Proveedor.Descripcion, PesoOrigen = organizacionDistribucion.CantidadSurtir, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, organizacionDistribucion.CantidadExistente.ToString("N0"), unidad, costo.Costo.Descripcion, costoUnitario.ToString("N2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); } } decimal porcientoOrg = (decimal)organizacionDistribucion.CantidadSurtir / (decimal)distribucionIngredientes.CantidadTotal; var importePorciento = costo.Iva ? (costo.Importe * ((organizacion.Iva.TasaIva / 100) + 1)) * porcientoOrg : costo.Importe * porcientoOrg; var descripcion = costo.TieneCuenta ? costo.CuentaSAP.Descripcion : costo.Proveedor.Descripcion; var cuenta = costo.TieneCuenta ? costo.CuentaSAP.CuentaSAP : costo.Proveedor.CodigoSAP; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", ((importePorciento) * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++renglon), ImporteIva = String.Empty, Ref3 = ref3.ToString(), Cuenta = String.Empty, ClaveProveedor = String.Empty, ClaveImpuesto = ClaveImpuesto, CondicionImpuesto = CondicionImpuesto, ArchivoFolio = archivoFolio, DescripcionCosto = descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(organizacionDistribucion.CantidadSurtir), 2), Division = organizacion.Division, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, cantidad.ToString("F0"), unidad, descripcion, (organizacionDistribucion.CostoTotal).ToString("F2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; if (costo.TieneCuenta) { datos.Cuenta = cuenta; } else { datos.ClaveProveedor = cuenta; } poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); } } if (!tieneIva && !costosTienenIva) { decimal importe = organizaciones.Sum(imp => imp.CostoTotal) + totalIva; decimal peso = organizaciones.Sum(kg => kg.CantidadSurtir); if (peso == 0) { peso = organizaciones.Sum(kg => kg.CantidadNueva); } bool esCuenta = false; var proveedor = distribucionIngredientes.Proveedor.CodigoSAP; if (!proveedor.StartsWith("0")) { esCuenta = true; } //numeroReferencia = ObtenerNumeroReferencia; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", (distribucionIngredientes.CostoTotal * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ClaveProveedor = esCuenta ? String.Empty : distribucionIngredientes.Proveedor.CodigoSAP, Cuenta = esCuenta ? distribucionIngredientes.Proveedor.CodigoSAP : String.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = distribucionIngredientes.Proveedor.Descripcion, PesoOrigen = Math.Round(peso, 2), Division = organizacion.Division, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} ${5} {6}", tipoMovimiento, numeroReferencia, (peso).ToString("F0"), unidad, producto.Descripcion, (importe).ToString("F2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizaPremezcla.Add(poliza); } return(polizaPremezcla); }
private IList <PolizaInfo> ObtenerPoliza(PolizaContratoModel datosContrato) { var polizasContrato = new List <PolizaInfo>(); long folioPedido = datosContrato.AlmacenMovimiento.FolioMovimiento; int organizacionID = datosContrato.Contrato.Organizacion.OrganizacionID; DateTime fechaPedido = datosContrato.Contrato.Fecha; int miliSegunda = DateTime.Now.Millisecond; string archivoFolio = ObtenerArchivoFolio(fechaPedido); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(organizacionID); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault( clave => clave.TipoPolizaID == TipoPoliza.PolizaContratoOtrosCostos.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.PolizaContratoOtrosCostos)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; PolizaInfo poliza; var renglon = 0; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append(Convert.ToString(folioPedido).PadLeft(10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(miliSegunda); ref3.Append(postFijoRef3); //string numeroDocumento = ObtenerNumeroReferencia; string numeroDocumento = ObtenerNumeroReferenciaFolio(datosContrato.AlmacenMovimiento.FolioMovimiento); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); List <CostoInfo> costos = datosContrato.OtrosCostos; CostoInfo costo; IList <UnidadMedicionInfo> unidadesMedicion = ObtenerUnidadesMedicion(); UnidadMedicionInfo unidadMedicion; IList <ProductoInfo> productos = ObtenerProductos(); ProductoInfo producto; DatosPolizaInfo datos; IList <int> costosConRetencion = costos.Select(cos => cos.CostoID).ToList(); for (var indexCostos = 0; indexCostos < costos.Count; indexCostos++) { costo = costos[indexCostos]; bool esProveedor = costo.Proveedor != null && !string.IsNullOrWhiteSpace(costo.Proveedor.CodigoSAP); bool tieneIva = costo.AplicaIva; bool tieneRetencion = costo.AplicaRetencion; fechaPedido = costo.FechaCosto != DateTime.MinValue ? costo.FechaCosto : fechaPedido; producto = productos.FirstOrDefault(id => id.ProductoId == datosContrato.Contrato.Producto.ProductoId); unidadMedicion = unidadesMedicion.FirstOrDefault(uni => uni.UnidadID == producto.UnidadId); #region Es Proveedor if (esProveedor) { #region Sin IVA ni Retencion if (!tieneIva && !tieneRetencion) { renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(), Importe = string.Format("{0}", costo.ImporteCosto.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = datosContrato.Contrato.Cuenta.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = datosContrato.Contrato.Cuenta.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), Division = organizacion.Division, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(), ClaveProveedor = costo.Proveedor.CodigoSAP, Importe = string.Format("{0}", (costo.ImporteCosto * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), Division = organizacion.Division, ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = costo.Proveedor.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); } #endregion Sin IVA ni Retencion else { #region Con IVA if (tieneIva) { CuentaSAPInfo cuentaIva = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta)); if (cuentaIva == null) { cuentaIva = new CuentaSAPInfo { Descripcion = string.Empty }; } renglon++; var importeIva = (costo.ImporteCosto) * (organizacion.Iva.TasaIva / 100); datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(), Division = organizacion.Division, ClaveProveedor = String.Empty, Importe = string.Format("{0}", costo.ImporteCosto.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = datosContrato.Contrato.Cuenta.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = producto.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(), ClaveProveedor = String.Empty, Importe = string.Format("{0}", importeIva.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = costo.ImporteCosto.ToString("F2"), IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar, ClaveImpuesto = ClaveImpuesto, CondicionImpuesto = CondicionImpuesto, Ref3 = ref3.ToString(), Division = organizacion.Division, Cuenta = organizacion.Iva.CuentaRecuperar.ClaveCuenta, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaIva.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento.ToString(), FechaEntrada = fechaPedido, Folio = folioPedido.ToString(), Division = organizacion.Division, ClaveProveedor = costo.Proveedor.CodigoSAP, Importe = string.Format("{0}", ((costo.ImporteCosto + importeIva) * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = costo.Proveedor.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); } #endregion Con IVA #region Con Retencion if (tieneRetencion) { var retencionBL = new RetencionBL(); var retenciones = retencionBL.ObtenerRetencionesConCosto(costosConRetencion); RetencionInfo retencion = null; if (retenciones != null && retenciones.Any()) { retencion = retenciones.FirstOrDefault( costoRet => costoRet.CostoID == costo.CostoID); } if (retencion != null) { var parametrosRetencion = new StringBuilder(); parametrosRetencion.Append(String.Format("{0}{1}" , retencion.IndicadorRetencion , retencion.TipoRetencion)); datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = costo.Proveedor.CodigoSAP, Importe = string.Format("-{0}", "0"), IndicadorImpuesto = parametrosRetencion.ToString(), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), CodigoRetencion = retencion.IndicadorImpuesto, TipoRetencion = retencion.IndicadorRetencion, ArchivoFolio = archivoFolio, DescripcionCosto = costo.Proveedor.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); if (!tieneIva) { renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = costo.Proveedor.CodigoSAP, Importe = string.Format("{0}", (costo.ImporteCosto * -1).ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = costo.Proveedor.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = String.Empty, Importe = string.Format("{0}", costo.ImporteCosto.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = datosContrato.Contrato.Cuenta.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = datosContrato.Contrato.Cuenta.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); } } } #endregion Con Retencion } } #endregion Es Proveedor #region Es Cuenta else { renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = String.Empty, Importe = string.Format("{0}", (costo.ImporteCosto * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = costo.CuentaSap.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = costo.CuentaSap.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaPedido, Folio = folioPedido.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, Importe = string.Format("{0}", costo.ImporteCosto.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = datosContrato.Contrato.Cuenta.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = producto.Descripcion, PesoOrigen = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4} {5} {6}", tipoMovimiento, folioPedido, costo.ToneladasCosto.ToString("N0"), unidadMedicion.ClaveUnidad, string.IsNullOrWhiteSpace(producto.Descripcion) ? producto.ProductoDescripcion : producto.Descripcion, costo.ImporteCosto.ToString("C2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); } #endregion Es Cuenta } return(polizasContrato); }