/// <summary> /// Obtiene la fecha del servidor de base de datos /// </summary> /// <returns></returns> public FechaInfo ObtenerFechaActual() { FechaInfo fecha; try { Logger.Info(); var fechaBl = new FechaBL(); fecha = fechaBl.ObtenerFechaActual(); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(fecha); }
public override MemoryStream ImprimePoliza(object datosPoliza, IList <PolizaInfo> polizas) { try { PolizaModel = new PolizaModel(); polizaImpresion = new PolizaImpresion <PolizaModel>(PolizaModel, TipoPoliza.SalidaTraspaso); var solicitudProducto = datosPoliza as SolicitudProductoReplicaInfo; if (solicitudProducto == null) { return(null); } long folioVenta = solicitudProducto.FolioSolicitud; int organizacionID = solicitudProducto.OrganizacionID; FechaBL fec = new FechaBL(); var fechaObj = fec.ObtenerFechaActual();//solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue; DateTime fechaVenta = fechaObj.FechaActual; OrganizacionInfo organizacionOrigen = ObtenerOrganizacionIVA(organizacionID); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = organizacionOrigen.Descripcion, Desplazamiento = 0 }, new PolizaEncabezadoModel { Descripcion = "Por Traspaso SAP", Desplazamiento = 0 } }; polizaImpresion.GeneraCabecero(new[] { "100", "100" }, "NombreGanadera"); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = "Nota de Salida de almacen", Desplazamiento = 0 }, new PolizaEncabezadoModel { Descripcion = string.Format("{0} {1}", "FOLIO No.", folioVenta), Desplazamiento = 0 }, }; polizaImpresion.GeneraCabecero(new[] { "100", "100" }, "NombreGanadera"); GeneraLinea(2); polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "NombreGanadera"); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = string.Format("CARGO A: {0}", solicitudProducto.AlmacenDestino.Descripcion), Desplazamiento = 0 }, new PolizaEncabezadoModel { Descripcion = string.Format("{0}:{1}", "FECHA", fechaVenta.ToShortDateString()), }, }; polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "Folio"); GeneraLinea(2); polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA"); GeneraLineaEncabezadoDetalle(); GeneraLineasDetalle(solicitudProducto); GeneraLinea(6); polizaImpresion.GeneraCabecero(new[] { "100" }, "Detalle"); GeneraLineaTotales(solicitudProducto); GeneraLinea(6); polizaImpresion.GenerarDetalles("Detalle"); GeneraLinea(5); polizaImpresion.GenerarLineaEnBlanco(); GeneraLineaEncabezadoRegistroContable(folioVenta); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable"); GeneraLineaSubEncabezadoRegistroContable(true, "Código", "Debe", "Haber"); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable"); IList <PolizaInfo> cargos; IList <PolizaInfo> abonos; GeneraLineaRegistroContable(polizas, out cargos, out abonos); polizaImpresion.GenerarRegistroContable("RegistroContable"); GeneraLinea(5); polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable"); GenerarLineaSumaRegistroContable(polizas, "Total=====>"); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable"); GeneraLinea(5); polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable"); polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5); polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5); polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5); GenerarLineaRevisoRecibio(); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25" }, "RegistroContable"); return(polizaImpresion.GenerarArchivo()); } catch (Exception ex) { Logger.Error(ex); throw; } }
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); }