/// <summary> /// Metodo que inicializa las polizas con datos generales apra cada linea /// </summary> /// <param name="input">SalidaGanadoEnTransitoInfo</param> /// <param name="ref3">StringBuilder</param> /// <param name="archivoFolio">StringBuilder</param> /// <param name="noLinea">Numero de linea</param> /// <returns>linea de la poliza inicializada</returns> private PolizaInfo InicializarPolizaInfo(SalidaGanadoEnTransitoInfo input, StringBuilder ref3, StringBuilder archivoFolio, int noLinea) { var lista = new PolizaInfo { FechaCreacion = DateTime.Now, OrganizacionID = input.OrganizacionID, UsuarioCreacionID = input.UsuarioCreacionID, NumeroReferencia = input.Folio.ToString(CultureInfo.InvariantCulture), FechaDocumento = input.Fecha.ToString("yyyyMMdd"), ClaseDocumento = datos.PostFijoRef3, Sociedad = datos.Sociedad, Moneda = MONEDA, TipoCambio = TIPOCAMBIO, TextoDocumento = datos.TipoPolizaDescripcion, Mes = input.FechaCreacion.Month.ToString(CultureInfo.InvariantCulture), TextoAsignado = input.Folio.ToString(CultureInfo.InvariantCulture), Concepto = string.Format("VT-{0} {1} CABEZAS {2} kgs", input.Folio, input.NumCabezas, input.Kilos), Division = datos.Division, BusAct = BUSACT, Periodo = input.FechaCreacion.Year.ToString(CultureInfo.InvariantCulture), NumeroLinea = noLinea.ToString(CultureInfo.InvariantCulture), Referencia1 = input.NumCabezas.ToString(CultureInfo.InvariantCulture), Referencia3 = ref3.ToString(), FechaImpuesto = input.Fecha.ToString("yyyyMMdd"), ImpuestoRetencion = 0, ImpuestoIva = 0.ToString(CultureInfo.InvariantCulture), ArchivoFolio = archivoFolio.ToString(), Segmento = "S" + datos.Sociedad, FechaContabilidad = input.Fecha.ToString("yyyyMMdd"), }; return(lista); }
/// <summary> /// Genera un nodo generico de una salida de ganado en transito por muerte /// </summary> /// <param name="input">Salida de ganado en transito al cual se le generara el nodo para la poliza</param> /// <param name="noLinea">Numero de linea correspondiente al nodo</param> /// <param name="ref3"></param> /// <param name="archivoFolio">Folio del archivo de la poliza de salida de ganado en transito</param> /// <returns>Regresa un nodo de poliza de salida de ganado en transito parcialmente inicializado</returns> PolizaInfo GenerarNodoPlantillaPolizaMuerteTransito(SalidaGanadoEnTransitoInfo input, int noLinea, string ref3, string archivoFolio) { try { var result = new PolizaInfo { OrganizacionID = input.OrganizacionID, UsuarioCreacionID = input.UsuarioCreacionID, NumeroReferencia = input.Folio.ToString(CultureInfo.InvariantCulture), FechaCreacion = DateTime.Now, FechaDocumento = input.Fecha.ToString("yyyyMMdd"), FechaContabilidad = input.Fecha.ToString("yyyyMMdd"), ClaseDocumento = datos.PostFijoRef3, Sociedad = datos.Sociedad, Moneda = MONEDA, TipoCambio = TIPOCAMBIO, TextoDocumento = datos.TipoPolizaDescripcion, Mes = input.FechaCreacion.Month.ToString(CultureInfo.InvariantCulture), TextoAsignado = input.Folio.ToString(CultureInfo.InvariantCulture), Concepto = string.Format("MT-{0} {1} CABEZAS {2} kgs", input.Folio, input.NumCabezas, input.Kilos), Division = datos.Division, BusAct = BUSACT, Periodo = input.FechaCreacion.Year.ToString(CultureInfo.InvariantCulture), NumeroLinea = noLinea.ToString(CultureInfo.InvariantCulture), Referencia1 = input.NumCabezas.ToString(CultureInfo.InvariantCulture), Referencia3 = ref3, FechaImpuesto = input.Fecha.ToString("yyyyMMdd"), ImpuestoRetencion = 0, ImpuestoIva = 0.ToString(CultureInfo.InvariantCulture), ArchivoFolio = archivoFolio, Segmento = "S" + datos.Sociedad }; return(result); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene un StackPanel que para mostrar las /// cuentas /// </summary> /// <param name="indexFormularios"></param> /// <param name="poliza"></param> /// <param name="tiposPoliza"> </param> /// <returns></returns> private System.Windows.Controls.StackPanel ObtenerPanelItem(int indexFormularios, PolizaInfo poliza, IList <TipoPolizaInfo> tiposPoliza) { Brush colorItem; if (indexFormularios % 2 == 0) { colorItem = new SolidColorBrush(Colors.LavenderBlush); } else { colorItem = new SolidColorBrush(Colors.White); } var grdDetalles = new System.Windows.Controls.Grid(); grdDetalles.SetValue(System.Windows.Controls.Grid.BackgroundProperty, colorItem); var columnaDescripcion = new System.Windows.Controls.ColumnDefinition { Width = new GridLength(300) }; var columnaLectura = new System.Windows.Controls.ColumnDefinition { Width = new GridLength(435) }; var columnaEscritura = new System.Windows.Controls.ColumnDefinition { Width = new GridLength(50) }; grdDetalles.ColumnDefinitions.Add(columnaDescripcion); grdDetalles.ColumnDefinitions.Add(columnaLectura); grdDetalles.ColumnDefinitions.Add(columnaEscritura); var row = new System.Windows.Controls.RowDefinition { Height = new GridLength(20) }; grdDetalles.RowDefinitions.Add(row); TipoPolizaInfo tipoPoliza = tiposPoliza.FirstOrDefault(x => x.TipoPolizaID == poliza.TipoPolizaID); if (tipoPoliza == null) { tipoPoliza = new TipoPolizaInfo(); } var lbl = new System.Windows.Controls.Label { Content = string.Format("{0}\t\t{1}\t{2}\t{3}", poliza.FechaDocumento, tipoPoliza.Descripcion, poliza.Concepto, Math.Abs(Convert.ToDecimal(poliza.Importe)).ToString("C2")) }; System.Windows.Controls.Grid.SetColumn(lbl, 0); System.Windows.Controls.Grid.SetColumnSpan(lbl, 2); System.Windows.Controls.Grid.SetRow(lbl, 0); var chkGenera = new System.Windows.Controls.CheckBox { HorizontalAlignment = HorizontalAlignment.Right, }; var bindGenera = new Binding("Generar") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Source = poliza, }; chkGenera.SetBinding(System.Windows.Controls.CheckBox.IsCheckedProperty, bindGenera); System.Windows.Controls.Grid.SetColumn(chkGenera, 2); System.Windows.Controls.Grid.SetRow(chkGenera, 0); grdDetalles.Children.Add(lbl); grdDetalles.Children.Add(chkGenera); var stack = new System.Windows.Controls.StackPanel { HorizontalAlignment = HorizontalAlignment.Center, Width = 1050, }; stack.Children.Add(grdDetalles); return(stack); }
private IList <PolizaInfo> ObtenerPoliza(List <AnimalCostoInfo> costosAnimales) { var polizasSalidaMuerte = new List <PolizaInfo>(); var costosAgrupados = costosAnimales.Where(imp => imp.Importe > 0).GroupBy(costo => new { costo.CostoID, costo.AnimalID }) .Select(animal => new { Importe = animal.Sum(imp => imp.Importe), animal.Key.CostoID, animal.Key.AnimalID, Arete = animal.Select(ani => ani.Arete).FirstOrDefault(), FolioReferencia = animal.Select(folio => folio.FolioReferencia).FirstOrDefault(), FechaCosto = animal.Select(fecha => fecha.FechaCosto).FirstOrDefault(), OrganizacionID = animal.Select(org => org.OrganizacionID).FirstOrDefault() }).ToList(); if (costosAgrupados != null && costosAgrupados.Any()) { TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaMuerte.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.SalidaMuerte)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; 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; if (costos == null) { costos = ObtenerCostos(); } List <AnimalInfo> animales = costosAgrupados.Select(ani => new AnimalInfo { AnimalID = ani.AnimalID }).ToList(); List <AnimalMovimientoInfo> animalesMovimiento = ObtenerUltimoMovimiento(animales); for (var indexCostos = 0; indexCostos < costosAgrupados.Count; indexCostos++) { var costoAnimal = costosAgrupados[indexCostos]; CostoInfo costo = costos.FirstOrDefault( tipo => tipo.CostoID == costoAnimal.CostoID); if (costo == null) { costo = new CostoInfo(); } string numeroReferencia = costoAnimal.Arete; OrganizacionInfo organizacion = ObtenerOrganizacionIVA(costoAnimal.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } ClaveContableInfo claveContableAbono = ObtenerCuentaInventario(costo, organizacion.OrganizacionID, organizacion.TipoOrganizacion.TipoOrganizacionID); if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO", costo.Descripcion)); } ClaveContableInfo claveContableCargo = ObtenerCuentaInventario(costo, organizacion.OrganizacionID, TipoPoliza.SalidaMuerte); if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO", costo.Descripcion)); } ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOENG.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } int peso = animalesMovimiento.Where(kilos => kilos.AnimalID == costoAnimal.AnimalID && kilos.TipoMovimientoID == TipoMovimiento.Muerte.GetHashCode()) .Select(proyeccion => proyeccion.Peso).FirstOrDefault(); DateTime fecha = animalesMovimiento.Where(kilos => kilos.AnimalID == costoAnimal.AnimalID && kilos.TipoMovimientoID == TipoMovimiento.Muerte.GetHashCode()) .Select(proyeccion => proyeccion.FechaMovimiento).FirstOrDefault(); if (fecha != null && fecha > default(DateTime)) { string archivoFolio = ObtenerArchivoFolio(fecha); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", costoAnimal.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.Valor, Division = organizacion.Division, ArchivoFolio = archivoFolio, CentroCosto = claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroCosto) || claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, PesoOrigen = peso, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} kgs", tipoMovimiento, numeroReferencia, peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaMuerte.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, Importe = string.Format("{0}", (costoAnimal.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.Valor, ArchivoFolio = archivoFolio, Division = organizacion.Division, PesoOrigen = peso, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} kgs", tipoMovimiento, numeroReferencia, peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaMuerte.Add(polizaSalida); } } } return(polizasSalidaMuerte); }
private IList <PolizaInfo> ObtenerPoliza(List <PolizaEntradaSalidaPorAjusteModel> ajustesDeInventario) { var polizasSalidaAjuste = new List <PolizaInfo>(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.EntradaAjuste.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.EntradaAjuste)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; var almacenMovimientoBL = new AlmacenMovimientoBL(); List <AlmacenMovimientoDetalle> almancenMovimientosDetalle = ajustesDeInventario.Select(mov => new AlmacenMovimientoDetalle { AlmacenMovimientoDetalleID = mov.AlmacenMovimientoDetalleID }).ToList(); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerMovimientoPorClaveDetalle(almancenMovimientosDetalle); if (almacenMovimiento == null) { almacenMovimiento = new AlmacenMovimientoInfo(); } string archivoFolio = ObtenerArchivoFolio(almacenMovimiento.FechaMovimiento); AlmacenInfo almacen = ObtenerAlmacen(almacenMovimiento.AlmacenID); if (almacen == null) { almacen = new AlmacenInfo { Organizacion = new OrganizacionInfo() }; } OrganizacionInfo organizacion = ObtenerOrganizacionIVA(almacen.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } 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(almacenMovimiento.FolioMovimiento); IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP(); IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(almacen.AlmacenID); ParametroOrganizacionInfo parametroOrganizacionSuperavit; if (almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) { parametroOrganizacionSuperavit = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTASUPERAVITENG.ToString()); } else { parametroOrganizacionSuperavit = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTASUPERAVIT.ToString()); } if (parametroOrganizacionSuperavit == null) { throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE SUPERAVIT NO CONFIGURADA")); } IList <ProductoInfo> productos = ObtenerProductos(); IList <UnidadMedicionInfo> unidades = ObtenerUnidadesMedicion(); IList <CuentaAlmacenSubFamiliaInfo> almacenesSubFamilia = ObtenerCostosSubFamilia(almacen.AlmacenID); ProductoInfo producto; PolizaEntradaSalidaPorAjusteModel ajuste; ClaseCostoProductoInfo almacenProducto; CuentaSAPInfo cuentaSAP; CuentaAlmacenSubFamiliaInfo almacenSubFamilia; ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } bool afectaCosto; for (var indexAjustes = 0; indexAjustes < ajustesDeInventario.Count; indexAjustes++) { ajuste = ajustesDeInventario[indexAjustes]; cuentaSAP = null; producto = productos.FirstOrDefault(clave => clave.ProductoId == ajuste.ProductoID); afectaCosto = ValidarAfectacionCuentaCosto(producto); if (!afectaCosto && (almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode())) { almacenSubFamilia = almacenesSubFamilia.FirstOrDefault(sub => sub.SubFamiliaID == producto.SubfamiliaId); if (almacenSubFamilia != null) { cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenSubFamilia.CuentaSAPID); } } else { almacenProducto = almacenesProductos.FirstOrDefault(prod => prod.ProductoID == producto.ProductoId); if (almacenProducto != null) { cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID); } } if (cuentaSAP == null) { throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO", producto.ProductoDescripcion, "NO CONFIGURADA")); } UnidadMedicionInfo unidad = unidades.FirstOrDefault(uni => uni.UnidadID == producto.UnidadId); if (unidad == null) { unidad = new UnidadMedicionInfo(); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = almacenMovimiento.FechaMovimiento, Folio = almacenMovimiento.FolioMovimiento.ToString(), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", ajuste.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, CentroCosto = cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) || cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, PesoOrigen = Math.Round(ajuste.Cantidad, 0), TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, almacenMovimiento.FolioMovimiento, producto.ProductoDescripcion, string.Format("{0} {1}", ajuste.Cantidad.ToString("N2"), unidad.ClaveUnidad), ajuste.Precio.ToString("C2")), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaAjuste.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = almacenMovimiento.FechaMovimiento, Folio = almacenMovimiento.FolioMovimiento.ToString(), Importe = string.Format("{0}", (ajuste.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = parametroOrganizacionSuperavit.Valor, CentroCosto = parametroOrganizacionSuperavit.Valor.StartsWith(PrefijoCuentaCentroCosto) || parametroOrganizacionSuperavit.Valor.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, PesoOrigen = Math.Round(ajuste.Cantidad, 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, almacenMovimiento.FolioMovimiento, producto.ProductoDescripcion, string.Format("{0} {1}", ajuste.Cantidad.ToString("N2"), unidad.ClaveUnidad), ajuste.Precio.ToString("C2")), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaAjuste.Add(polizaSalida); } return(polizasSalidaAjuste); }
private IList <PolizaInfo> ObtenerPoliza(TraspasoMpPaMedInfo traspasoMp) { var polizasSalidaTraspaso = new List <PolizaInfo>(); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida = ObtenerCostosProducto(traspasoMp.AlmacenOrigen.AlmacenID); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoEntrada = ObtenerCostosProducto(traspasoMp.AlmacenDestino.AlmacenID); if (cuentasAlmacenProductoSalida == null) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén origen"); } if (cuentasAlmacenProductoEntrada == null) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén de destino"); } TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.EntradaTraspaso.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.EntradaTraspaso)); } IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; //TO DO REVISAR SI CAMBIARA EL REF 3 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); var almacenMovimientoBL = new AlmacenMovimientoBL(); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorId(traspasoMp.AlmacenMovimientoID); string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento); //string numeroReferencia = ObtenerNumeroReferencia; DateTime fecha = traspasoMp.FechaTraspaso; string archivoFolio = ObtenerArchivoFolio(fecha); var organizacionBL = new OrganizacionBL(); OrganizacionInfo organizacionOrigen = organizacionBL.ObtenerPorAlmacenID(traspasoMp.AlmacenOrigen.AlmacenID); if (organizacionOrigen == null) { organizacionOrigen = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } OrganizacionInfo organizacionDestino = organizacionBL.ObtenerPorAlmacenID(traspasoMp.AlmacenDestino.AlmacenID); if (organizacionDestino == null) { organizacionDestino = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamiliaSalida = ObtenerCostosSubFamilia(traspasoMp.AlmacenOrigen.AlmacenID); IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamiliaEntrada = ObtenerCostosSubFamilia(traspasoMp.AlmacenDestino.AlmacenID); ParametroOrganizacionInfo parametroCentroCostoOrigen = ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCostoOrigen == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } ParametroOrganizacionInfo parametroCentroCostoDestino = ObtenerParametroOrganizacionPorClave(organizacionDestino.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCostoDestino == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } bool afectaCosto; CuentaSAPInfo claveContableCargo; afectaCosto = ValidarAfectacionCuentaCosto(traspasoMp.ProductoOrigen); if (!afectaCosto && (traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.GeneralGanadera.GetHashCode()) { var cuentaSapSubFamiliaEntrada = cuentasSubFamiliaEntrada.FirstOrDefault( cuenta => cuenta.SubFamiliaID == traspasoMp.ProductoOrigen.SubFamilia.SubFamiliaID); if (cuentaSapSubFamiliaEntrada == null) { cuentaSapSubFamiliaEntrada = new CuentaAlmacenSubFamiliaInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaEntrada.CuentaSAPID); } else { var cuentaSapEntrada = cuentasAlmacenProductoEntrada.FirstOrDefault( cuenta => cuenta.ProductoID == traspasoMp.ProductoOrigen.ProductoId); if (cuentaSapEntrada == null) { cuentaSapEntrada = new ClaseCostoProductoInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID); } if (traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode()) { ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacionDestino.OrganizacionID, ParametrosEnum.CuentaMedicamentoTransito.ToString()); if (cuentaMedicamento == null) { cuentaMedicamento = new ParametroOrganizacionInfo { Valor = string.Empty }; } claveContableCargo = cuentasSap.FirstOrDefault( sap => sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase)); } if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", traspasoMp.ProductoOrigen.ProductoDescripcion)); } linea = 0; linea++; var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", traspasoMp.ImporteTraspaso.ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.CuentaSAP, CentroCosto = claveContableCargo.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroCentroCostoDestino.Valor : string.Empty, Division = organizacionDestino.Division, ArchivoFolio = archivoFolio, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, traspasoMp.ProductoOrigen.ProductoDescripcion, string.Format("{0} {1}.", traspasoMp.CantidadTraspasarDestino.ToString("N2"), traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad), traspasoMp.PrecioTraspasoDestino.ToString("C2")), Sociedad = organizacionDestino.Sociedad, DescripcionProducto = claveContableCargo.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); #region CuentaAbono CuentaSAPInfo claveContableAbono = null; afectaCosto = ValidarAfectacionCuentaCosto(traspasoMp.ProductoOrigen); if (!afectaCosto && (traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.GeneralGanadera.GetHashCode()) { var cuentaSapSubFamiliaSalida = cuentasSubFamiliaSalida.FirstOrDefault( cuenta => cuenta.SubFamiliaID == traspasoMp.ProductoOrigen.SubFamilia.SubFamiliaID); if (cuentaSapSubFamiliaSalida == null) { cuentaSapSubFamiliaSalida = new CuentaAlmacenSubFamiliaInfo(); } claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaSalida.CuentaSAPID); } else { var cuentaSapSalida = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == traspasoMp.ProductoOrigen.ProductoId); if (cuentaSapSalida == null) { cuentaSapSalida = new ClaseCostoProductoInfo(); } claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSalida.CuentaSAPID); } if (traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode()) { ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID, ParametrosEnum.CuentaMedicamentoTransito.ToString()); if (cuentaMedicamento == null) { cuentaMedicamento = new ParametroOrganizacionInfo { Valor = string.Empty }; } claveContableAbono = cuentasSap.FirstOrDefault( sap => sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase)); } if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", traspasoMp.ProductoOrigen.ProductoDescripcion)); } #endregion CuentaAbono linea++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", (traspasoMp.ImporteTraspaso * -1).ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.CuentaSAP, ArchivoFolio = archivoFolio, CentroCosto = claveContableAbono.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroCentroCostoOrigen.Valor : string.Empty, Division = organizacionOrigen.Division, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, traspasoMp.ProductoOrigen.ProductoDescripcion, string.Format("{0} {1}.", traspasoMp.CantidadTraspasarOrigen.ToString("N2"), traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad), traspasoMp.PrecioTraspasoOrigen.ToString("C2")), Sociedad = organizacionOrigen.Sociedad, DescripcionProducto = claveContableAbono.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionOrigen.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); return(polizasSalidaTraspaso); }
private IList <PolizaInfo> ObtenerPoliza(PolizaContratoModel datosContrato) { var polizasContrato = new List <PolizaInfo>(); int folioPedido = datosContrato.Contrato.Folio; int organizacionID = datosContrato.Contrato.Organizacion.OrganizacionID; DateTime fechaPedido = datosContrato.Contrato.Fecha; int miliSegunda = DateTime.Now.Millisecond; string archivoFolio = ObtenerArchivoFolio(fechaPedido); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(organizacionID); var tipoContrato = (TipoContratoEnum)datosContrato.Contrato.TipoContrato.TipoContratoId; var tipoPolizaEnum = TipoPoliza.PolizaContratoTerceros; switch (tipoContrato) { case TipoContratoEnum.EnTransito: tipoPolizaEnum = TipoPoliza.PolizaContratoTransito; break; } TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == tipoPolizaEnum.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.PolizaContratoTerceros)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; 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); var proveedorAlmacenBL = new ProveedorAlmacenBL(); ProveedorAlmacenInfo proveedorAlmacen = proveedorAlmacenBL.ObtenerPorProveedorId(datosContrato.Contrato.Proveedor); if (proveedorAlmacen == null) { throw new ExcepcionServicio(string.Format("EL PROVEEDOR {0} NO TIENE ALMACEN ASIGNADO", datosContrato.Contrato.Proveedor.Descripcion)); } decimal importe = datosContrato.Contrato.Precio * datosContrato.Contrato.Cantidad; var renglon = 1; var datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = datosContrato.Contrato.Fecha, Folio = datosContrato.Contrato.Folio.ToString(), Importe = string.Format("{0}", importe.ToString("F2")), 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, datosContrato.Contrato.Folio, datosContrato.Contrato.Cantidad.ToString("N0"), "KGS", datosContrato.Contrato.Producto.Descripcion, importe.ToString("N2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = datosContrato.Contrato.Fecha, Folio = datosContrato.Contrato.Folio.ToString(), ClaveProveedor = datosContrato.Contrato.Proveedor.CodigoSAP, Importe = string.Format("{0}", (importe * -1).ToString("F2")), Renglon = Convert.ToString(renglon), Division = organizacion.Division, ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = datosContrato.Contrato.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, datosContrato.Contrato.Folio, datosContrato.Contrato.Cantidad.ToString("N0"), "KGS", datosContrato.Contrato.Producto.Descripcion, importe.ToString("N2"), postFijoRef3), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; poliza = GeneraRegistroPoliza(datos); polizasContrato.Add(poliza); return(polizasContrato); }
private IList <PolizaInfo> ObtenerPoliza(SalidaProductoInfo salidaProducto) { var polizasSalida = new List <PolizaInfo>(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaVentaProducto.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.SalidaVentaProducto)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; 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 = string.Format("{0}{1}", salidaProducto.FolioSalida, ObtenerNumeroReferencia); string numeroReferencia = ObtenerNumeroReferenciaFolio(salidaProducto.FolioSalida); IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP(); IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(salidaProducto.Almacen.AlmacenID); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(salidaProducto.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } ClaseCostoProductoInfo almacenProducto = almacenesProductos.FirstOrDefault(prod => prod.ProductoID == salidaProducto.Producto.ProductoId); if (almacenProducto == null) { throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO", salidaProducto.Producto.Descripcion, "NO CONFIGURADA")); } CuentaSAPInfo cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID); if (cuentaSAP == null) { cuentaSAP = new CuentaSAPInfo { Descripcion = string.Empty, CuentaSAP = string.Empty }; } ClaveContableInfo claveContableCosto = ObtenerCuentaInventario(salidaProducto.Organizacion. OrganizacionID, TipoPoliza.ConsumoAlimento); if (claveContableCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE COSTO NO CONFIGURADA")); } ClaveContableInfo claveContableBeneficios = ObtenerCuentaInventario(salidaProducto.Organizacion. OrganizacionID, TipoPoliza.SalidaVentaProducto); if (claveContableBeneficios == null) { throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE BENEFICIOS NO CONFIGURADA")); } ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } ParametroOrganizacionInfo parametroCentroBeneficio = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROBENEFICIOMP.ToString()); if (parametroCentroBeneficio == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE BENEFICIO NO CONFIGURADO")); } string archivoFolio = ObtenerArchivoFolio(salidaProducto.FechaSalida); int cantidad = salidaProducto.PesoBruto - salidaProducto.PesoTara; var almacenMovimientoDetalleBL = new AlmacenMovimientoDetalleBL(); AlmacenMovimientoDetalle detalleMovimiento = almacenMovimientoDetalleBL.ObtenerPorAlmacenMovimientoID( salidaProducto.AlmacenMovimiento.AlmacenMovimientoID); if (detalleMovimiento == null) { detalleMovimiento = new AlmacenMovimientoDetalle(); } if (unidades == null) { unidades = ObtenerUnidadesMedicion(); } if (productos == null) { productos = ObtenerProductos(); } ProductoInfo producto = productos.FirstOrDefault(clave => clave.ProductoId == salidaProducto.Producto.ProductoId); if (producto == null) { producto = new ProductoInfo(); } switch ((SubFamiliasEnum)producto.SubfamiliaId) { case SubFamiliasEnum.Granos: claveContableBeneficios.Valor = string.Concat(claveContableBeneficios.Valor, PostFijoSubFamiliaGranos); claveContableCosto.Valor = string.Concat(claveContableCosto.Valor, PostFijoSubFamiliaGranos); break; default: claveContableBeneficios.Valor = string.Concat(claveContableBeneficios.Valor, PostFijoSubFamiliaNoGranos); claveContableCosto.Valor = string.Concat(claveContableCosto.Valor, PostFijoSubFamiliaNoGranos); break; } var traspaso = false; if (salidaProducto.TipoMovimiento.TipoMovimientoID == TipoMovimiento.ProductoSalidaTraspaso.GetHashCode() || salidaProducto.TipoMovimiento.Descripcion.Equals("salida por traspaso", StringComparison.InvariantCultureIgnoreCase)) { salidaProducto.Cliente = new ClienteInfo { CodigoSAP = salidaProducto.CuentaSAP.CuentaSAP, Descripcion = salidaProducto.CuentaSAP.Descripcion }; traspaso = true; } string unidad = unidades.Where(clave => clave.UnidadID == producto.UnidadId). Select(uni => uni.ClaveUnidad).FirstOrDefault(); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Cliente = traspaso ? string.Empty : salidaProducto.Cliente.CodigoSAP, Cuenta = traspaso ? salidaProducto.Cliente.CodigoSAP : string.Empty, Importe = string.Format("{0}", salidaProducto.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", ClaseDocumento = postFijoRef3, Ref3 = ref3.ToString(), Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = salidaProducto.Cliente.Descripcion, PesoOrigen = cantidad, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Importe = (detalleMovimiento.Importe * -1).ToString("F2"), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = archivoFolio, PesoOrigen = cantidad, ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); if (!traspaso) { cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAP == claveContableCosto.Valor); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA DE COSTO NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Importe = detalleMovimiento.Importe.ToString("F2"), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, CentroCosto = claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroCosto) || claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, //CentroBeneficio = // claveContableBeneficios.Valor.StartsWith(PrefijoCuentaCentroBeneficio) // ? parametroCentroBeneficio.Valor // : string.Empty, PesoOrigen = cantidad, ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAP == claveContableBeneficios.Valor); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA DE BENEFICIOS NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Importe = string.Format("{0}", (salidaProducto.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, //CentroCosto = // claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroCosto) || // claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroGasto) // ? parametroCentroCosto.Valor // : string.Empty, CentroBeneficio = claveContableBeneficios.Valor.StartsWith(PrefijoCuentaCentroBeneficio) ? parametroCentroBeneficio.Valor : string.Empty, PesoOrigen = cantidad, ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); } return(polizasSalida); }
/// <summary> /// Genera la estructura de la poliza de la 300 /// </summary> /// <param name="polizaSacrificioModel"></param> /// <param name="cuentasSap"></param> /// <param name="proveedores"></param> /// <param name="parametroGeneral"></param> /// <param name="organizacion"></param> /// <param name="textoDocumento"></param> /// <param name="tipoMovimiento"></param> /// <param name="postFijoRef3"></param> /// <returns></returns> private List <PolizaInfo> ObtenerPoliza300(List <PolizaSacrificioModel> datosPoliza , IList <CuentaSAPInfo> cuentasSap , IList <ProveedorInfo> proveedores , ParametroGeneralInfo parametroGeneral , OrganizacionInfo organizacion , string textoDocumento, string tipoMovimiento , string postFijoRef3) { var polizasSacrificio = new List <PolizaInfo>(); decimal importe = 0; int linea = 0; var sbRef3 = new StringBuilder(); sbRef3.Append("03"); sbRef3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); sbRef3.Append(new Random(10).Next(10, 20)); sbRef3.Append(new Random(30).Next(30, 40)); sbRef3.Append(DateTime.Now.Millisecond); sbRef3.Append(postFijoRef3); var sbArchivo = new StringBuilder(ObtenerArchivoFolio(datosPoliza.FirstOrDefault().Fecha)); Thread.Sleep(1000); PolizaSacrificioModel polizaSacrificioModel = new PolizaSacrificioModel(); datosPoliza = datosPoliza.GroupBy(grupo => new { grupo.Serie, grupo.Folio }) .Select(dato => new PolizaSacrificioModel { OrganizacionID = dato.Select(org => org.OrganizacionID).FirstOrDefault(), Canales = dato.Select(can => can.Canales).Sum(), //Lote = dato.Select(lot => lot.Lote).FirstOrDefault(), Peso = dato.Select(peso => peso.Peso).Sum(), Fecha = dato.Select(fech => fech.Fecha).FirstOrDefault(), Folio = dato.Key.Folio, //LoteID = dato.Select(lot => lot.LoteID).FirstOrDefault(), //Codigo = dato.Select(cod => cod.Codigo).FirstOrDefault(), ImporteCanal = dato.Select(imp => imp.ImporteCanal).Sum(), Serie = dato.Key.Serie, ImportePiel = dato.Select(imp => imp.ImportePiel).Sum(), ImporteViscera = dato.Select(imp => imp.ImporteViscera).Sum() }).ToList(); for (var indexSacrificio = 0; indexSacrificio < datosPoliza.Count; indexSacrificio++) { polizaSacrificioModel = datosPoliza[indexSacrificio]; importe = polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel; //var numeroReferencia = new StringBuilder(string.Format("{0}{1}", polizaSacrificioModel.Folio, ObtenerNumeroReferencia)); var numeroReferencia = ObtenerNumeroReferenciaFolio(Convert.ToInt64(polizaSacrificioModel.Folio)); CuentaSAPInfo cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaPoliza300)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA CANAL NO CONFIGURADA"); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (importe * -1).ToString("F2") : importe.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), ImporteIva = "0", Ref3 = sbRef3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Segmento = "S300", DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha: {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso , polizaSacrificioModel.Fecha.ToString("yyyyMMdd")), Sociedad = organizacion.Sociedad, ArchivoEnviadoServidor = 1 }; PolizaInfo polizaSacrificio = GeneraRegistroPoliza(datos); polizasSacrificio.Add(polizaSacrificio); ProveedorInfo proveedor = proveedores.FirstOrDefault(codigo => codigo.CodigoSAP.Equals(parametroGeneral.Valor)); if (proveedor == null) { throw new ExcepcionServicio(string.Format("EL PROVEEDOR CON CODIGO {0} SE ENCUENTRA INACTIVO", parametroGeneral.Valor)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (importe).ToString("F2") : (importe * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), ImporteIva = "0", ClaveProveedor = proveedor.CodigoSAP, DescripcionCosto = proveedor.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha: {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso , polizaSacrificioModel.Fecha.ToString("yyyyMMdd")), Sociedad = organizacion.Sociedad, ArchivoEnviadoServidor = 1, Segmento = "S300", }; polizaSacrificio = GeneraRegistroPoliza(datos); polizasSacrificio.Add(polizaSacrificio); } return(polizasSacrificio); }
/// <summary> /// Genera la estructura de la poliza de la 212 /// </summary> /// <param name="polizaSacrificioModel"></param> /// <param name="cuentasSap"></param> /// <param name="proveedores"></param> /// <param name="parametroGeneral"></param> /// <param name="organizacion"></param> /// <param name="textoDocumento"></param> /// <param name="tipoMovimiento"></param> /// <param name="postFijoRef3"></param> /// <param name="parametroOrganizacion"> </param> /// <returns></returns> private List <PolizaInfo> ObtenerPoliza212(List <PolizaSacrificioModel> datosPoliza , IList <CuentaSAPInfo> cuentasSap , IList <ProveedorInfo> proveedores , ParametroGeneralInfo parametroGeneral , OrganizacionInfo organizacion , string textoDocumento, string tipoMovimiento , string postFijoRef3, ParametroOrganizacionInfo parametroOrganizacion) { var polizasSacrificio = new List <PolizaInfo>(); DatosPolizaInfo datoCliente; bool datoClienteRegistrado = false; int linea = 0; int canales = 0; decimal peso = 0; PolizaInfo polizaSacrificioCliente = new PolizaInfo(); var sbRef3 = new StringBuilder(); sbRef3.Append("03"); sbRef3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); sbRef3.Append(new Random(10).Next(10, 20)); sbRef3.Append(new Random(30).Next(30, 40)); sbRef3.Append(DateTime.Now.Millisecond); sbRef3.Append(postFijoRef3); PolizaSacrificioModel polizaSacrificioModel = new PolizaSacrificioModel(); var sbArchivo = new StringBuilder(ObtenerArchivoFolio(datosPoliza.FirstOrDefault().Fecha)); Thread.Sleep(1000); for (var indexSacrificio = 0; indexSacrificio < datosPoliza.Count; indexSacrificio++) { polizaSacrificioModel = datosPoliza[indexSacrificio]; long folio = 0; long.TryParse(polizaSacrificioModel.Folio, out folio); //var numeroReferencia = new StringBuilder(string.Format("{0}{1}", polizaSacrificioModel.Folio, ObtenerNumeroReferencia)); var numeroReferencia = ObtenerNumeroReferenciaFolio(Convert.ToInt64(folio)); CuentaSAPInfo cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaCanal)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA CANAL NO CONFIGURADA"); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImporteCanal.ToString("F2") : (polizaSacrificioModel.ImporteCanal * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), Cuenta = cuentaSAP.CuentaSAP, CentroBeneficio = parametroOrganizacion.Valor, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), ImporteIva = "0", PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento, polizaSacrificioModel.Lote , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSacrificio = GeneraRegistroPoliza(datos); polizaSacrificio.Corral = polizaSacrificioModel.Corral; polizasSacrificio.Add(polizaSacrificio); cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaPiel)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA PIEL NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImportePiel.ToString("F2") : (polizaSacrificioModel.ImportePiel * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), Cuenta = cuentaSAP.CuentaSAP, ImporteIva = "0", CentroBeneficio = parametroOrganizacion.Valor, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento, polizaSacrificioModel.Lote , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSacrificio = GeneraRegistroPoliza(datos); polizaSacrificio.Corral = polizaSacrificioModel.Corral; polizasSacrificio.Add(polizaSacrificio); cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaViscera)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA VISCERA NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImporteViscera.ToString("F2") : (polizaSacrificioModel.ImporteViscera * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), ImporteIva = "0", Cuenta = cuentaSAP.CuentaSAP, CentroBeneficio = parametroOrganizacion.Valor, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento, polizaSacrificioModel.Lote , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSacrificio = GeneraRegistroPoliza(datos); polizaSacrificio.Corral = polizaSacrificioModel.Corral; polizasSacrificio.Add(polizaSacrificio); ProveedorInfo proveedor = proveedores.FirstOrDefault(codigo => codigo.CodigoSAP.Equals(parametroGeneral.Valor)); if (proveedor == null) { throw new ExcepcionServicio(string.Format("EL PROVEEDOR CON CODIGO {0} SE ENCUENTRA INACTIVO", parametroGeneral.Valor)); } if (datoClienteRegistrado) { polizaSacrificioCliente.Importe = string.Format("{0}", Cancelacion ? (Convert.ToDecimal(polizaSacrificioCliente.Importe) + ((polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel) * -1)).ToString("F2") : (Convert.ToDecimal(polizaSacrificioCliente.Importe) + (polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel)).ToString("F2")); canales = canales + polizaSacrificioModel.Canales; peso = peso + polizaSacrificioModel.Peso; polizaSacrificioCliente.Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha:{5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , canales , peso, polizaSacrificioModel.Fecha.ToString("yyyyMMdd")); } else { datoCliente = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? ((polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel) * -1).ToString("F2") : (polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel).ToString("F2")), IndicadorImpuesto = String.Empty, //Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), Cliente = proveedor.CodigoSAP, DescripcionCosto = proveedor.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, ImporteIva = "0", TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha:{5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso, polizaSacrificioModel.Fecha.ToString("yyyyMMdd")), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; datoClienteRegistrado = true; polizaSacrificioCliente = GeneraRegistroPoliza(datoCliente); peso = polizaSacrificioModel.Peso; canales = polizaSacrificioModel.Canales; } } polizaSacrificioCliente.NumeroLinea = (++linea).ToString(); polizaSacrificioCliente.Corral = "A"; polizasSacrificio.Add(polizaSacrificioCliente); return(polizasSacrificio); }
private IList <PolizaInfo> ObtenerPoliza(ProduccionFormulaInfo produccionFormula) { var polizasProduccionAlimento = new List <PolizaInfo>(); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida = ObtenerCostosProducto(produccionFormula.Almacen.AlmacenID); if (cuentasAlmacenProductoSalida == null || !cuentasAlmacenProductoSalida.Any()) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén de planta de alimentos"); } IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.ProduccionAlimento.GetHashCode()); string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; 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); var almacenMovimientoBL = new AlmacenMovimientoBL(); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorId(produccionFormula.AlmacenMovimientoEntradaID); //string numeroReferencia = ObtenerNumeroReferencia; string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento); DateTime fecha = produccionFormula.FechaProduccion; string archivoFolio = ObtenerArchivoFolio(fecha); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(produccionFormula.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } foreach (var produccionDetalle in produccionFormula.ProduccionFormulaDetalle) { CuentaSAPInfo claveContableCargo; var cuentaSapEntrada = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == produccionFormula.Formula.Producto.ProductoId); if (cuentaSapEntrada == null) { cuentaSapEntrada = new ClaseCostoProductoInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID); if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionFormula.Formula.Producto.ProductoDescripcion)); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = produccionFormula.FechaProduccion, Folio = numeroReferencia, CabezasRecibidas = string.Empty, NumeroDocumento = string.Empty, ClaseDocumento = postFijoRef3, ClaveProveedor = string.Empty, Importe = string.Format("{0}", Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2).ToString("F2")), IndicadorImpuesto = String.Empty, CentroCosto = string.Empty, Renglon = Convert.ToString(linea++), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.CuentaSAP, CodigoRetencion = string.Empty, Division = organizacion.Division, TipoRetencion = string.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = string.Empty, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, produccionDetalle.Producto.ProductoDescripcion, (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)), produccionDetalle.PrecioPromedio.ToString("C2")), Sociedad = organizacion.Sociedad, DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasProduccionAlimento.Add(polizaSalida); var cuentaSapSale = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == produccionDetalle.Producto.ProductoId); if (cuentaSapSale == null) { cuentaSapSale = new ClaseCostoProductoInfo(); } var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSale.CuentaSAPID); if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionDetalle.Producto.ProductoDescripcion)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = produccionFormula.FechaProduccion, Folio = numeroReferencia, CabezasRecibidas = string.Empty, NumeroDocumento = string.Empty, ClaseDocumento = postFijoRef3, ClaveProveedor = string.Empty, Importe = string.Format("{0}", (Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2) * -1).ToString("F2")), IndicadorImpuesto = String.Empty, CentroCosto = string.Empty, Renglon = Convert.ToString(linea++), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.CuentaSAP, CodigoRetencion = string.Empty, TipoRetencion = string.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = string.Empty, Division = organizacion.Division, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, produccionDetalle.Producto.ProductoDescripcion, (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)), produccionDetalle.PrecioPromedio.ToString("C2")), Sociedad = organizacion.Sociedad, DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasProduccionAlimento.Add(polizaSalida); } return(polizasProduccionAlimento); }
private IList <PolizaInfo> ObtenerPoliza(GanadoIntensivoInfo ganadoIntensivo) { var polizasSalidaMuerteIntensiva = new List <PolizaInfo>(); if (ganadoIntensivo.ListaGanadoIntensivoCosto != null && ganadoIntensivo.ListaGanadoIntensivoCosto.Any()) { TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaMuerteIntensiva.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.SalidaMuerteIntensiva)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; int linea = 1; 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; if (costos == null) { costos = ObtenerCostos(); } foreach (var ganadoIntensivoCostoInfo in ganadoIntensivo.ListaGanadoIntensivoCosto) { CostoInfo costo = costos.FirstOrDefault(tipo => tipo.CostoID == ganadoIntensivoCostoInfo.Costos.CostoID); if (costo == null) { costo = new CostoInfo(); } //= ObtenerOrganizacionIVA(ganadoIntensivo.Organizacion.OrganizacionID); OrganizacionInfo organizacion = ObtenerOrganizacionSociedadDivision(ganadoIntensivo.Organizacion.OrganizacionID, SociedadEnum.SuKarne); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } const int Corral_Intensivo = 4; const int Corral_Maquila = 6; int tipoOrganizacioID = 0; switch (ganadoIntensivo.Lote.TipoCorralID) { case Corral_Intensivo: tipoOrganizacioID = TipoOrganizacion.Intensivo.GetHashCode(); break; case Corral_Maquila: tipoOrganizacioID = TipoOrganizacion.Maquila.GetHashCode(); break; } if (tipoOrganizacioID > 0) { organizacion.TipoOrganizacion.TipoOrganizacionID = tipoOrganizacioID; } ClaveContableInfo claveContableAbono = ObtenerCuentaInventario(costo, organizacion.OrganizacionID, organizacion.TipoOrganizacion.TipoOrganizacionID); if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO", costo.Descripcion)); } ClaveContableInfo claveContableCargo = ObtenerCuentaInventario(costo, organizacion.OrganizacionID, TipoPoliza.SalidaMuerteIntensiva); if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO", costo.Descripcion)); } ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCTOINT.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } EntradaGanadoInfo entradaGanado = ganadoIntensivo.EntradaGanado; var pesoMuerteTotal = Math.Round(((entradaGanado.PesoBruto - entradaGanado.PesoTara) / entradaGanado.CabezasRecibidas) * ganadoIntensivo.Cabezas, 0); //VALIDAR FECHA DateTime fecha = DateTime.Today; if (fecha != null) { string archivoFolio = ObtenerArchivoFolio(fecha); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = ganadoIntensivo.FolioTicket.ToString(), Importe = string.Format("{0}", ganadoIntensivoCostoInfo.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.Valor, Division = organizacion.Division, ArchivoFolio = archivoFolio, CentroCosto = claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroCosto) || claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, //PesoOrigen = peso, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} CABEZAS {2} kgs", tipoMovimiento, ganadoIntensivo.Cabezas, pesoMuerteTotal), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaMuerteIntensiva.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = ganadoIntensivo.FolioTicket.ToString(), Importe = string.Format("{0}", (ganadoIntensivoCostoInfo.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.Valor, ArchivoFolio = archivoFolio, Division = organizacion.Division, // PesoOrigen = peso, TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1}, CABEZAS, {2} kgs", tipoMovimiento, ganadoIntensivo.Cabezas, pesoMuerteTotal), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaMuerteIntensiva.Add(polizaSalida); } } } return(polizasSalidaMuerteIntensiva); }
private IList <PolizaInfo> ObtenerPoliza(List <ContenedorAlmacenMovimientoCierreDia> contenedor) { var polizasConsumo = new List <PolizaInfo>(); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); int organizacionID = contenedor[0].Almacen.Organizacion.OrganizacionID; int almacenID = contenedor[0].Almacen.AlmacenID; OrganizacionInfo organizacion = ObtenerOrganizacionIVA(organizacionID); int tipoOrigenID = organizacion.TipoOrganizacion.TipoProceso.TipoProcesoID; IList <CostoInfo> costos = ObtenerCostos(); IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamilia; var movimientos = contenedor.GroupBy(prod => new { prod.Producto.ProductoId, prod.Producto.Descripcion }) .Select(mov => new { Importe = mov.Sum(det => det.AlmacenMovimientoDetalle.Importe), ProductoID = mov.Key.ProductoId, Producto = mov.Key.Descripcion, FechaMovimiento = mov.Select(fech => fech.AlmacenMovimiento.FechaMovimiento).FirstOrDefault(), SubFamilia = mov.Select(sf => sf.Producto.SubFamilia.Descripcion).FirstOrDefault(), SubFamiliaID = mov.Select(sf => sf.Producto.SubFamilia.SubFamiliaID).FirstOrDefault(), Familia = mov.Select(fam => fam.Producto.SubFamilia.Familia.Descripcion).FirstOrDefault(), TipoTratamientoID = mov.Select(trat => trat.AlmacenMovimientoDetalle.Tratamiento.TipoTratamientoInfo.TipoTratamientoID).FirstOrDefault(), TipoTratamiento = mov.Select(trat => trat.AlmacenMovimientoDetalle.Tratamiento.TipoTratamientoInfo.Descripcion).FirstOrDefault(), Almacen = mov.Select(alm => alm.Almacen.Descripcion).FirstOrDefault(), AlmacenID = mov.Select(alm => alm.Almacen.AlmacenID).FirstOrDefault(), FolioAlmacen = mov.Select(folio => folio.FolioAlmacen).FirstOrDefault() }).ToList(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.ConsumoProducto.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.ConsumoProducto)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; const int TIPO_COSTO = 3; var linea = 1; 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); ParametroOrganizacionInfo parametroOrganizacion = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOENG.ToString()); string numeroDocumento = ObtenerNumeroReferencia; var archivoFolio = string.Empty; var filtros = new FiltroCierreDiaInventarioInfo { AlmacenID = almacenID, TipoMovimientoID = TipoMovimiento.DiferenciasDeInventario.GetHashCode() }; var almacenBL = new AlmacenBL(); int folioAlmacen = almacenBL.ObtenerFolioAlmacenConsulta(filtros); var almacenMovimientoBL = new AlmacenMovimientoBL(); almacenMovimientoBL.ActualizarFolioAlmacen(almacenID); if (movimientos.Any()) { var folioRef = new StringBuilder(); folioRef.Append(almacenID.ToString(CultureInfo.InvariantCulture).PadLeft(3, '0')); folioRef.Append(folioAlmacen.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0')); DateTime fecha = movimientos[0].FechaMovimiento; archivoFolio = ObtenerArchivoFolio(fecha); numeroDocumento = folioRef.ToString(); for (var indexMovimientos = 0; indexMovimientos < movimientos.Count; indexMovimientos++) { var mov = movimientos[indexMovimientos]; string descripcionMovimiento = ObtenerDescripcionMovimiento(mov.TipoTratamientoID); CostoInfo costo = costos.FirstOrDefault( tipo => tipo.TipoCosto.TipoCostoID == TIPO_COSTO && tipo.Descripcion.IndexOf(descripcionMovimiento, StringComparison.InvariantCultureIgnoreCase) >= 0); if (costo == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA", descripcionMovimiento)); } ClaveContableInfo claveContable = ObtenerCuentaInventario(costo, organizacionID, tipoOrigenID); if (claveContable == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO", costo.Descripcion)); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = mov.FechaMovimiento, Importe = string.Format("{0}", mov.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), Division = organizacion.Division, ImporteIva = "0", ClaseDocumento = postFijoRef3, Ref3 = ref3.ToString(), Cuenta = claveContable.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContable.Descripcion, CentroCosto = claveContable.Valor.StartsWith(PrefijoCuentaCentroCosto) ? parametroOrganizacion.Valor : string.Empty, PesoOrigen = 0, TipoDocumento = textoDocumento, Folio = folioAlmacen.ToString(), Concepto = String.Format("{0}-{1} {2}", tipoMovimiento, folioAlmacen, mov.Producto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaConsumo = GeneraRegistroPoliza(datos); polizasConsumo.Add(polizaConsumo); } } movimientos = contenedor.GroupBy(prod => new { prod.Producto.SubFamilia.SubFamiliaID }).Select(mov => new { Importe = mov.Sum(det => det.AlmacenMovimientoDetalle.Importe), ProductoID = 0, Producto = string.Empty, FechaMovimiento = mov.Select(fech => fech.AlmacenMovimiento.FechaMovimiento).FirstOrDefault(), SubFamilia = mov.Select(sf => sf.Producto.SubFamilia.Descripcion).FirstOrDefault(), mov.Key.SubFamiliaID, Familia = mov.Select(fam => fam.Producto.SubFamilia.Familia.Descripcion).FirstOrDefault(), TipoTratamientoID = mov.Select(trat => trat.AlmacenMovimientoDetalle.Tratamiento.TipoTratamientoInfo.TipoTratamientoID).FirstOrDefault(), TipoTratamiento = mov.Select(trat => trat.AlmacenMovimientoDetalle.Tratamiento.TipoTratamientoInfo.Descripcion).FirstOrDefault(), Almacen = mov.Select(alm => alm.Almacen.Descripcion).FirstOrDefault(), AlmacenID = mov.Select(alm => alm.Almacen.AlmacenID).FirstOrDefault(), FolioAlmacen = mov.Select(folio => folio.FolioAlmacen).FirstOrDefault() }).ToList(); if (movimientos != null && movimientos.Any()) { CuentaSAPInfo cuentaSap; CuentaAlmacenSubFamiliaInfo cuentaSubFamilia; for (var indexMovimientos = 0; indexMovimientos < movimientos.Count; indexMovimientos++) { var mov = movimientos[indexMovimientos]; string descripcionMovimiento = ObtenerDescripcionMovimiento(mov.TipoTratamientoID); CostoInfo costo = costos.FirstOrDefault( tipo => tipo.TipoCosto.TipoCostoID == TIPO_COSTO && tipo.Descripcion.IndexOf(descripcionMovimiento, StringComparison.InvariantCultureIgnoreCase) >= 0); if (costo == null) { costo = new CostoInfo(); } ClaveContableInfo claveContable = ObtenerCuentaInventario(costo, organizacionID, tipoOrigenID); if (claveContable == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO", costo.Descripcion)); } cuentasSubFamilia = ObtenerCostosSubFamilia(mov.AlmacenID); if (cuentasSubFamilia == null) { cuentasSubFamilia = new List <CuentaAlmacenSubFamiliaInfo>(); } cuentaSubFamilia = cuentasSubFamilia.FirstOrDefault(clave => clave.SubFamiliaID == mov.SubFamiliaID); if (cuentaSubFamilia == null) { cuentaSubFamilia = new CuentaAlmacenSubFamiliaInfo(); } cuentaSap = cuentasSap.FirstOrDefault(clave => clave.CuentaSAPID == cuentaSubFamilia.CuentaSAPID); if (cuentaSap == null) { throw new ExcepcionServicio(string.Format("CUENTA NO CONFIGURADA PARA EL PRODUCTO {0}", mov.Producto)); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = mov.FechaMovimiento, Importe = string.Format("{0}", (mov.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", ClaseDocumento = postFijoRef3, Division = organizacion.Division, Ref3 = ref3.ToString(), Cuenta = cuentaSap.CuentaSAP, ArchivoFolio = archivoFolio, CentroCosto = cuentaSap.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroOrganizacion.Valor : string.Empty, DescripcionCosto = cuentaSap.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Folio = folioAlmacen.ToString(), Concepto = String.Format("{0}-{1} {2}", tipoMovimiento, folioAlmacen, mov.Producto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaConsumo = GeneraRegistroPoliza(datos); polizasConsumo.Add(polizaConsumo); } } return(polizasConsumo); }
private IList <PolizaInfo> ObtenerPoliza(SolicitudProductoInfo solicitud) { var polizasSalidaConsumo = new List <PolizaInfo>(); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida = ObtenerCostosProducto(solicitud.AlmacenGeneralID); if (cuentasAlmacenProductoSalida == null) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén general"); } IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaConsumo.GetHashCode()); string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; //TO DO REVISAR SI CAMBIARA EL REF 3 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; DateTime fecha = solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue; string archivoFolio = ObtenerArchivoFolio(fecha); var organizacionBL = new OrganizacionBL(); OrganizacionInfo organizacion = organizacionBL.ObtenerPorAlmacenID(solicitud.AlmacenGeneralID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } string claveParametro; var centrosCosto = ObtenerCentrosCosto(); var camionesReparto = ObtenerCamionesRepartoPorOrganizacion(organizacion.OrganizacionID); //camionRepartoBL.ObtenerPorOrganizacionID(organizacion.OrganizacionID); var primerDetalle = solicitud.Detalle.FirstOrDefault(); bool esCamionReparto; if (primerDetalle != null && primerDetalle.CamionRepartoID.HasValue && primerDetalle.CamionRepartoID.Value > 0) { claveParametro = ParametrosEnum.CuentaCostosDiesel.ToString(); esCamionReparto = true; } else { claveParametro = ParametrosEnum.CuentaCostosProductosAlmacen.ToString(); esCamionReparto = false; } ParametroOrganizacionInfo parametroCuenta = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, claveParametro); if (parametroCuenta == null) { throw new ExcepcionServicio(string.Format("No se encuentró valor de la cuenta, para el parámetro {0}, en la organización", claveParametro)); } foreach (var solicitudDetalle in solicitud.Detalle) { int centroCostoID; if (esCamionReparto) { CamionRepartoInfo camionReparto = camionesReparto.FirstOrDefault( camion => camion.CamionRepartoID == solicitudDetalle.CamionRepartoID); if (camionReparto == null) { camionReparto = new CamionRepartoInfo(); } centroCostoID = camionReparto.CentroCosto.CentroCostoID; } else { centroCostoID = solicitud.CentroCostoID; } CentroCostoInfo centroCostoCargo = centrosCosto.FirstOrDefault(centro => centro.CentroCostoID == centroCostoID); if (centroCostoCargo == null) { throw new ExcepcionServicio("No se encuentró el centro de costo"); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue, Folio = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture), CabezasRecibidas = string.Empty, NumeroDocumento = string.Empty, ClaseDocumento = postFijoRef3, ClaveProveedor = string.Empty, Importe = string.Format("{0}", Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2).ToString("F2")), IndicadorImpuesto = String.Empty, CentroCosto = string.Format("{0}{1}{2}", "SA0", organizacion.OrganizacionID, centroCostoCargo.CentroCostoSAP), Renglon = Convert.ToString(linea++), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = parametroCuenta.Valor, CodigoRetencion = string.Empty, Division = organizacion.Division, TipoRetencion = string.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = string.Empty, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, solicitud.FolioSolicitud, solicitudDetalle.Cantidad.ToString("N2"), solicitudDetalle.Producto.Descripcion, (Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2).ToString("C2"))), Sociedad = organizacion.Sociedad, DescripcionProducto = solicitudDetalle.Producto.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaConsumo.Add(polizaSalida); var cuentaSapSale = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == solicitudDetalle.Producto.ProductoId); if (cuentaSapSale == null) { cuentaSapSale = new ClaseCostoProductoInfo(); } var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSale.CuentaSAPID); if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", solicitudDetalle.Producto.Descripcion)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue, Folio = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture), CabezasRecibidas = string.Empty, NumeroDocumento = string.Empty, ClaseDocumento = postFijoRef3, ClaveProveedor = string.Empty, Importe = string.Format("{0}", (Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2) * -1).ToString("F2")), IndicadorImpuesto = String.Empty, CentroCosto = string.Empty, Renglon = Convert.ToString(linea++), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.CuentaSAP, CodigoRetencion = string.Empty, TipoRetencion = string.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = string.Empty, Division = organizacion.Division, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, solicitud.FolioSolicitud, solicitudDetalle.Producto.Descripcion, solicitudDetalle.Cantidad.ToString("N2"), (Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2).ToString("C2"))), Sociedad = organizacion.Sociedad, DescripcionProducto = solicitudDetalle.Producto.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaConsumo.Add(polizaSalida); } return(polizasSalidaConsumo); }
private IList <PolizaInfo> ObtenerPoliza(SolicitudProductoReplicaInfo solicitud) { var polizasEntradaTraspaso = new List <PolizaInfo>(); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoEntrada = ObtenerCostosProducto(solicitud.AlmacenDestino.AlmacenID); if (cuentasAlmacenProductoEntrada == null) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén de destino"); } TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.EntradaTraspasoSAP.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.EntradaTraspasoSAP)); } IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; //TO DO REVISAR SI CAMBIARA EL REF 3 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(solicitud.FolioSolicitud); FechaBL fec = new FechaBL(); var fechaObj = fec.ObtenerFechaActual(); DateTime fecha = fechaObj.FechaActual; string archivoFolio = ObtenerArchivoFolio(fecha); var organizacionBL = new OrganizacionBL(); OrganizacionInfo organizacion = organizacionBL.ObtenerPorAlmacenID(solicitud.AlmacenDestino.AlmacenID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamilia = ObtenerCostosSubFamilia(solicitud.AlmacenDestino.AlmacenID); ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } bool afectaCosto; foreach (var solicitudDetalle in solicitud.Detalle.Where(a => a.Activo).ToList()) { CuentaSAPInfo claveContableCargo; afectaCosto = ValidarAfectacionCuentaCosto(solicitudDetalle.Producto); if (!afectaCosto && (solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode())) { var cuentaSapSubFamiliaEntrada = cuentasSubFamilia.FirstOrDefault( cuenta => cuenta.SubFamiliaID == solicitudDetalle.Producto.SubFamilia.SubFamiliaID); if (cuentaSapSubFamiliaEntrada == null) { cuentaSapSubFamiliaEntrada = new CuentaAlmacenSubFamiliaInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaEntrada.CuentaSAPID); } else { var cuentaSapEntrada = cuentasAlmacenProductoEntrada.FirstOrDefault( cuenta => cuenta.ProductoID == solicitudDetalle.ProductoID); if (cuentaSapEntrada == null) { cuentaSapEntrada = new ClaseCostoProductoInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID); } if (solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode()) { ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CuentaMedicamentoTransito.ToString()); if (cuentaMedicamento == null) { cuentaMedicamento = new ParametroOrganizacionInfo { Valor = string.Empty }; } claveContableCargo = cuentasSap.FirstOrDefault( sap => sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase)); } if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", solicitudDetalle.Producto.Descripcion)); } if ((solicitudDetalle.Cantidad * solicitudDetalle.PrecioUnitario) <= 0) { continue; } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Math.Round( solicitudDetalle.Cantidad * solicitudDetalle.PrecioUnitario, 2). ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.CuentaSAP, CentroCosto = claveContableCargo.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroCentroCosto.Valor : string.Empty, Division = organizacion.Division, ArchivoFolio = archivoFolio, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, solicitud.FolioSolicitud.ToString( CultureInfo.InvariantCulture), solicitudDetalle.Producto.Descripcion, string.Format("{0} {1}.", solicitudDetalle.Cantidad.ToString("N2"), solicitudDetalle.Producto.UnidadMedicion. ClaveUnidad), solicitudDetalle.PrecioUnitario.ToString("C2")), Sociedad = organizacion.Sociedad, DescripcionProducto = claveContableCargo.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasEntradaTraspaso.Add(polizaSalida); var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAP == solicitudDetalle.CuentaSAP); if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta {0}, del producto {1}", solicitudDetalle.CuentaSAP, solicitudDetalle.Producto.ProductoDescripcion)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Math.Round((solicitudDetalle.Cantidad * solicitudDetalle.PrecioUnitario) * -1, 2).ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.CuentaSAP, ArchivoFolio = archivoFolio, CentroCosto = claveContableAbono.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroCentroCosto.Valor : string.Empty, Division = organizacion.Division, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture), solicitudDetalle.Producto.Descripcion, string.Format("{0} {1}.", solicitudDetalle.Cantidad.ToString("N2"), solicitudDetalle.Producto.UnidadMedicion. ClaveUnidad), solicitudDetalle.PrecioUnitario.ToString("C2")), Sociedad = organizacion.Sociedad, DescripcionProducto = claveContableAbono.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasEntradaTraspaso.Add(polizaSalida); } return(polizasEntradaTraspaso); }