예제 #1
0
 /// <summary>
 ///     Metodo para Crear un nuevo registro de TipoPoliza
 /// </summary>
 /// <param name="info">Valores de la entidad que será creada</param>
 internal int Crear(TipoPolizaInfo info)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxTipoPolizaDAL.ObtenerParametrosCrear(info);
         int result = Create("TipoPoliza_Crear", parameters);
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #2
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad TipoPoliza
 /// </summary>
 /// <param name="info"></param>
 internal int Guardar(TipoPolizaInfo info)
 {
     try
     {
         Logger.Info();
         var tipoPolizaDAL = new TipoPolizaDAL();
         int result        = info.TipoPolizaID;
         if (info.TipoPolizaID == 0)
         {
             result = tipoPolizaDAL.Crear(info);
         }
         else
         {
             tipoPolizaDAL.Actualizar(info);
         }
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #3
0
 /// <summary>
 /// Obtiene un registro de TipoPoliza
 /// </summary>
 /// <param name="descripcion">Descripción de la TipoPoliza</param>
 /// <returns></returns>
 internal TipoPolizaInfo ObtenerPorDescripcion(string descripcion)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxTipoPolizaDAL.ObtenerParametrosPorDescripcion(descripcion);
         DataSet        ds     = Retrieve("TipoPoliza_ObtenerPorDescripcion", parameters);
         TipoPolizaInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapTipoPolizaDAL.ObtenerPorDescripcion(ds);
         }
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #4
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// con la poliza de compra
        /// </summary>
        /// <param name="contenedorEntradaMateriaPrima"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimpresionPolizaCompra(ContenedorEntradaMateriaPrimaInfo contenedorEntradaMateriaPrima
                                                     , TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasVenta = polizaBL.ObtenerPoliza(TipoPoliza.EntradaCompra,
                                                                     contenedorEntradaMateriaPrima.Contrato.Organizacion.
                                                                     OrganizacionID,
                                                                     contenedorEntradaMateriaPrima.Contrato.Fecha
                                                                     ,
                                                                     contenedorEntradaMateriaPrima.Contrato.Folio.
                                                                     ToString(),
                                                                     polizaClave.ClavePoliza, 1);
            MemoryStream stream = null;

            if (polizasVenta != null)
            {
                var entradaProductoBL = new EntradaProductoBL();
                contenedorEntradaMateriaPrima =
                    entradaProductoBL.ObtenerPorFolioEntradaContrato(contenedorEntradaMateriaPrima.Contrato.Folio,
                                                                     contenedorEntradaMateriaPrima.Contrato.ContratoId,
                                                                     contenedorEntradaMateriaPrima.Contrato.Organizacion.OrganizacionID);
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaCompra);
                polizasVenta = poliza.GeneraPoliza(contenedorEntradaMateriaPrima);
                stream       = poliza.ImprimePoliza(contenedorEntradaMateriaPrima, polizasVenta);
            }
            return(stream);
        }
예제 #5
0
 /// <summary>
 /// Reimprime una poliza
 /// </summary>
 /// <param name="tipoPoliza"></param>
 /// <param name="polizaModel"></param>
 /// <param name="polizaClave"> </param>
 public IList <ResultadoPolizaModel> ReimprimirMultiplePoliza(TipoPoliza tipoPoliza, ReimpresionPolizaModel polizaModel
                                                              , TipoPolizaInfo polizaClave)
 {
     try
     {
         Logger.Info();
         IList <ResultadoPolizaModel> pdf = null;
         switch (tipoPoliza)
         {
         case TipoPoliza.PaseProceso:
             pdf = ReimpresionPolizaPaseProceso(polizaModel.Pedido, polizaClave);
             break;
         }
         return(pdf);
     }
     catch (ExcepcionServicio)
     {
         throw;
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #6
0
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new TipoPolizaInfo
     {
         UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
     };
 }
예제 #7
0
        public void ObtenerTipoPolizaPorId()
        {
            var            tipoPolizaPL = new TipoPolizaPL();
            TipoPolizaInfo tipoPoliza   = tipoPolizaPL.ObtenerPorID(1);

            Assert.IsNotNull(tipoPoliza);
            Assert.IsTrue(tipoPoliza.Descripcion.Length > 0);
        }
예제 #8
0
        /// <summary>
        /// Obtiene los valores para la reimpresion de
        /// la poliza de salida por venta
        /// </summary>
        /// <param name="ventaGanado"></param>
        /// <param name="polizaClave"> </param>
        private MemoryStream ReimprimirPolizaVenta(VentaGanadoInfo ventaGanado, TipoPolizaInfo polizaClave)
        {
            var polizaBL       = new PolizaBL();
            int organizacionID = ventaGanado.Lote.OrganizacionID;
            var ventaGanadoBL  = new VentaGanadoBL();
            List <ContenedorVentaGanado> ventasGanado =
                ventaGanadoBL.ObtenerVentaGanadoPorTicketPoliza(ventaGanado.FolioTicket, organizacionID);
            MemoryStream pdf = null;

            var tipoPoliza = TipoPoliza.SalidaVenta;

            IList <PolizaInfo> polizasVenta = polizaBL.ObtenerPoliza(tipoPoliza, organizacionID,
                                                                     ventaGanado.FechaVenta
                                                                     , ventaGanado.FolioTicket.ToString(),
                                                                     polizaClave.ClavePoliza, 1);
            var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(tipoPoliza);

            var polizaGenerada = false;

            if (polizasVenta == null)
            {
                if (ventasGanado != null && ventasGanado.Any())
                {
                    var animalCostoBL = new AnimalCostoBL();
                    var detalleVentas = new List <VentaGanadoDetalleInfo>();
                    ventasGanado.ForEach(det => detalleVentas.Add(det.VentaGanadoDetalle));

                    List <AnimalInfo> animalesGenerarPoliza = detalleVentas.Select(ani => new AnimalInfo
                    {
                        AnimalID = ani.Animal.AnimalID,
                        OrganizacionIDEntrada = organizacionID
                    }).ToList();
                    List <AnimalCostoInfo> animalCosto = animalCostoBL.ObtenerCostosAnimal(animalesGenerarPoliza);
                    if (animalCosto != null &&
                        !animalCosto.Any(id => id.CostoID == 1 && id.Importe == 0))
                    {
                        polizasVenta = poliza.GeneraPoliza(ventasGanado);
                        polizasVenta.ToList().ForEach(org => org.OrganizacionID = organizacionID);
                        polizaBL.GuardarServicioPI(polizasVenta, tipoPoliza);
                        polizaGenerada = true;
                    }
                }
            }
            if (polizasVenta != null && polizasVenta.Any())
            {
                if (ventasGanado != null && ventasGanado.Any())
                {
                    if (!polizaGenerada)
                    {
                        polizasVenta = poliza.GeneraPoliza(ventasGanado);
                    }
                    pdf = poliza.ImprimePoliza(ventasGanado, polizasVenta);
                }
            }
            return(pdf);
        }
        private void CargaTipoPoliza()
        {
            var tipoPolizaPL   = new TipoPolizaPL();
            var tipoPolizaInfo = new TipoPolizaInfo
            {
                TipoPolizaID = 0,
                Descripcion  = Properties.Resources.cbo_Seleccione,
            };
            IList <TipoPolizaInfo> listaTipoPoliza = tipoPolizaPL.ObtenerTodos(EstatusEnum.Activo);

            listaTipoPoliza.Insert(0, tipoPolizaInfo);
            cmbTipoPoliza.ItemsSource  = listaTipoPoliza;
            cmbTipoPoliza.SelectedItem = tipoPolizaInfo;
        }
예제 #10
0
 /// <summary>
 /// Evento que se ejecuta mientras se esta cerrando la ventana
 /// </summary>
 /// <param name="e"></param>
 protected override void OnClosing(CancelEventArgs e)
 {
     if (confirmaSalir)
     {
         MessageBoxResult result = SkMessageBox.Show(this, Properties.Resources.Msg_CerrarSinGuardar, MessageBoxButton.YesNo,
                                                     MessageImage.Question);
         if (result == MessageBoxResult.Yes)
         {
             Contexto = null;
         }
         else
         {
             e.Cancel = true;
         }
     }
 }
예제 #11
0
        /// <summary>
        /// Metodo que valida los datos para guardar
        /// </summary>
        /// <returns></returns>
        private bool ValidaGuardar()
        {
            bool   resultado = true;
            string mensaje   = string.Empty;

            try
            {
                if (string.IsNullOrWhiteSpace(txtDescripcion.Text) || Contexto.Descripcion == string.Empty)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.TipoPolizaEdicion_MsgDescripcionRequerida;
                    txtDescripcion.Focus();
                }
                else if (string.IsNullOrWhiteSpace(txtClavePoliza.Text) || Contexto.ClavePoliza == string.Empty)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.TipoPolizaEdicion_MsgClavePolizaRequerida;
                    txtClavePoliza.Focus();
                }
                else
                {
                    int    tipoPolizaId = Extensor.ValorEntero(txtTipoPolizaID.Text);
                    string descripcion  = txtDescripcion.Text.Trim();

                    var            tipoPolizaPL = new TipoPolizaPL();
                    TipoPolizaInfo tipoPoliza   = tipoPolizaPL.ObtenerPorDescripcion(descripcion);

                    if (tipoPoliza != null && (tipoPolizaId == 0 || tipoPolizaId != tipoPoliza.TipoPolizaID))
                    {
                        resultado = false;
                        mensaje   = string.Format(Properties.Resources.TipoPolizaEdicion_MsgDescripcionExistente, tipoPoliza.TipoPolizaID);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Warning);
            }
            return(resultado);
        }
예제 #12
0
        /// <summary>
        /// Obtiene los Tipos de Poliza
        /// </summary>
        private void ObtenerTiposPoliza()
        {
            var tiposPolizaPL = new TipoPolizaPL();
            IList <TipoPolizaInfo> tiposPoliza = tiposPolizaPL.ObtenerTodos(EstatusEnum.Activo);

            if (tiposPoliza == null)
            {
                tiposPoliza = new List <TipoPolizaInfo>();
            }
            var tipoPoliza = new TipoPolizaInfo
            {
                TipoPolizaID  = 0,
                Descripcion   = Properties.Resources.cbo_Seleccione,
                ImprimePoliza = true
            };

            tiposPoliza.Insert(0, tipoPoliza);
            Contexto.TiposPoliza = tiposPoliza.Where(imp => imp.ImprimePoliza).ToList();
        }
예제 #13
0
 /// <summary>
 /// Obtiene una entidad por su descripción
 /// </summary>
 /// <param name="descripcion"></param>
 /// <returns></returns>
 public TipoPolizaInfo ObtenerPorDescripcion(string descripcion)
 {
     try
     {
         Logger.Info();
         var            tipoPolizaBL = new TipoPolizaBL();
         TipoPolizaInfo result       = tipoPolizaBL.ObtenerPorDescripcion(descripcion);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #14
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad TipoPoliza
 /// </summary>
 /// <param name="info">Representa la entidad que se va a grabar</param>
 public int Guardar(TipoPolizaInfo info)
 {
     try
     {
         Logger.Info();
         var tipoPolizaBL = new TipoPolizaBL();
         int result       = tipoPolizaBL.Guardar(info);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #15
0
 /// <summary>
 /// Obtiene una entidad TipoPoliza por su Id
 /// </summary>
 /// <param name="tipoPolizaID">Obtiene una entidad TipoPoliza por su Id</param>
 /// <returns></returns>
 internal TipoPolizaInfo ObtenerPorID(int tipoPolizaID)
 {
     try
     {
         Logger.Info();
         var            tipoPolizaDAL = new TipoPolizaDAL();
         TipoPolizaInfo result        = tipoPolizaDAL.ObtenerPorID(tipoPolizaID);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        private void ObtenerPoliza()
        {
            var tiposPlizaPL = new TipoPolizaPL();
            IList <TipoPolizaInfo> tiposPoliza = tiposPlizaPL.ObtenerTodos(EstatusEnum.Activo);

            if (tiposPoliza == null)
            {
                tiposPoliza = new List <TipoPolizaInfo>();
            }
            var tipoPoliza = new TipoPolizaInfo
            {
                TipoPolizaID = 0,
                Descripcion  = Properties.Resources.cbo_Seleccione
            };

            tiposPoliza.Insert(0, tipoPoliza);

            cboTipoPoliza.ItemsSource       = tiposPoliza;
            cboTipoPoliza.SelectedValuePath = "TipoPolizaID";
            cboTipoPoliza.DisplayMemberPath = "Descripcion";
        }
예제 #17
0
 /// <summary>
 ///     Obtiene parametros para crear
 /// </summary>
 /// <param name="info">Valores de la entidad</param>
 /// <returns></returns>
 internal static Dictionary <string, object> ObtenerParametrosCrear(TipoPolizaInfo info)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@Descripcion", info.Descripcion },
             { "@ClavePoliza", info.ClavePoliza },
             { "@Activo", info.Activo },
             { "@UsuarioCreacionID", info.UsuarioCreacionID },
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #18
0
 /// <summary>
 ///  Método que obtiene un registro
 /// </summary>
 /// <param name="ds"></param>
 /// <returns></returns>
 internal static TipoPolizaInfo ObtenerPorID(DataSet ds)
 {
     try
     {
         Logger.Info();
         DataTable      dt      = ds.Tables[ConstantesDAL.DtDatos];
         TipoPolizaInfo entidad =
             (from info in dt.AsEnumerable()
              select
              new TipoPolizaInfo
         {
             TipoPolizaID = info.Field <int>("TipoPolizaID"),
             Descripcion = info.Field <string>("Descripcion"),
             ClavePoliza = info.Field <string>("ClavePoliza"),
             Activo = info.Field <bool>("Activo").BoolAEnum(),
         }).First();
         return(entidad);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #19
0
        private IList <PolizaInfo> ObtenerPoliza(GastoInventarioInfo gastoInventario)
        {
            var polizasGastosInventario = new List <PolizaInfo>();

            var costos = new List <int> {
                gastoInventario.Costo.CostoID
            };
            var retencionBL = new RetencionBL();
            var retenciones = retencionBL.ObtenerRetencionesConCosto(costos);
            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();

            TipoPolizaInfo tipoPoliza =
                TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.GastosInventario.GetHashCode());

            if (tipoPoliza == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                          TipoPoliza.GastosInventario));
            }

            string textoDocumento = tipoPoliza.TextoDocumento;
            string tipoMovimiento = tipoPoliza.ClavePoliza;
            string postFijoRef3   = tipoPoliza.PostFijoRef3;

            var ref3 = new StringBuilder();

            ref3.Append("03");
            ref3.Append(
                string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                    10, ' '));
            ref3.Append(new Random(10).Next(10, 20));
            ref3.Append(new Random(30).Next(30, 40));
            ref3.Append(DateTime.Now.Millisecond);
            ref3.Append(postFijoRef3);

            //string numeroReferencia = ObtenerNumeroReferencia;
            string numeroReferencia = ObtenerNumeroReferenciaFolio(gastoInventario.FolioGasto);

            DateTime fecha        = gastoInventario.FechaGasto;
            string   archivoFolio = ObtenerArchivoFolio(fecha);

            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(gastoInventario.Organizacion.OrganizacionID);

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }

            bool esProveedor    = gastoInventario.Proveedor != null && gastoInventario.Proveedor.ProveedorID > 0;
            bool tieneRetencion = gastoInventario.Retencion;
            var  renglon        = 0;

            ClaveContableInfo claveContableInfo = ObtenerCuentaInventario(gastoInventario.Costo
                                                                          , gastoInventario.Organizacion.OrganizacionID
                                                                          , 0);

            CuentaSAPInfo cuentaSapProvision = null;

            if (!esProveedor)
            {
                cuentaSapProvision =
                    cuentasSap.FirstOrDefault(
                        clave => clave.CuentaSAPID == gastoInventario.CuentaSAP.CuentaSAPID);
                if (cuentaSapProvision == null)
                {
                    cuentaSapProvision =
                        cuentasSap.FirstOrDefault(
                            clave =>
                            clave.CuentaSAP.Equals(gastoInventario.CuentaGasto,
                                                   StringComparison.InvariantCultureIgnoreCase));

                    if (cuentaSapProvision == null)
                    {
                        throw new ExcepcionServicio(
                                  string.Format("No se encuentra configurada la cuenta de provisión, para el costo {0}",
                                                gastoInventario.Costo.Descripcion));
                    }
                }
            }
            string complementoConcepto;

            if (gastoInventario.Corral != null)
            {
                complementoConcepto = string.Format("Corral {0}", gastoInventario.Corral.Codigo);
            }
            else
            {
                complementoConcepto = string.Format("{0} Corrales", gastoInventario.TotalCorrales);
            }
            PolizaInfo polizaEntrada;

            if (esProveedor)
            {
                if (!gastoInventario.IVA && !tieneRetencion)
                {
                    renglon++;
                    var datos = new DatosPolizaInfo
                    {
                        NumeroReferencia = numeroReferencia,
                        FechaEntrada     = gastoInventario.FechaGasto,
                        Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                        ClaseDocumento   = postFijoRef3,
                        Importe          =
                            string.Format("{0}",
                                          Cancelacion ? (gastoInventario.Importe * -1).ToString("F2")
                                                                      : gastoInventario.Importe.ToString("F2")),
                        Renglon          = Convert.ToString(renglon),
                        Division         = organizacion.Division,
                        ImporteIva       = "0",
                        Ref3             = ref3.ToString(),
                        Cuenta           = claveContableInfo.Valor,
                        ArchivoFolio     = archivoFolio,
                        DescripcionCosto = claveContableInfo.Descripcion,
                        PesoOrigen       = 0,
                        TipoDocumento    = textoDocumento,
                        Concepto         =
                            String.Format("{0}-{1},{2}", tipoMovimiento,
                                          gastoInventario.FolioGasto
                                          , complementoConcepto),
                        Sociedad = organizacion.Sociedad,
                        Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                    };
                    polizaEntrada = GeneraRegistroPoliza(datos);
                    polizasGastosInventario.Add(polizaEntrada);

                    renglon++;
                    datos = new DatosPolizaInfo
                    {
                        NumeroReferencia = numeroReferencia,
                        FechaEntrada     = gastoInventario.FechaGasto,
                        Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                        ClaveProveedor   = gastoInventario.Proveedor.CodigoSAP,
                        ClaseDocumento   = postFijoRef3,
                        Importe          =
                            string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2")
                                                                         : (gastoInventario.Importe * -1).ToString("F2")),
                        Renglon          = Convert.ToString(renglon),
                        ImporteIva       = "0",
                        Ref3             = ref3.ToString(),
                        ArchivoFolio     = archivoFolio,
                        DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                        PesoOrigen       = 0,
                        Division         = organizacion.Division,
                        TipoDocumento    = textoDocumento,
                        Concepto         =
                            String.Format("{0}-{1},{2}", tipoMovimiento,
                                          gastoInventario.FolioGasto
                                          , complementoConcepto),
                        Sociedad = organizacion.Sociedad,
                        Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                    };
                    polizaEntrada = GeneraRegistroPoliza(datos);
                    polizasGastosInventario.Add(polizaEntrada);
                }
                else
                {
                    if (gastoInventario.IVA)
                    {
                        CuentaSAPInfo cuentaIva = cuentasSap.FirstOrDefault(
                            clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta));
                        if (cuentaIva == null)
                        {
                            throw new ExcepcionServicio(string.Format("No se encuentra configurada la cuenta de iva, para la organización."));
                        }
                        renglon++;
                        var importeIva = gastoInventario.Importe * (organizacion.Iva.TasaIva / 100);
                        var datos      = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = gastoInventario.FechaGasto,
                            Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            Division         = organizacion.Division,
                            ClaseDocumento   = postFijoRef3,
                            Importe          = string.Format("{0}",
                                                             Cancelacion ? (gastoInventario.Importe * -1).ToString("F2")
                                                                                : gastoInventario.Importe.ToString("F2")),
                            Renglon          = Convert.ToString(renglon),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            Cuenta           = claveContableInfo.Valor,
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = claveContableInfo.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                        renglon++;
                        datos = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = gastoInventario.FechaGasto,
                            Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            ClaseDocumento   = postFijoRef3,
                            Importe          = string.Format("{0}",
                                                             Cancelacion ? (importeIva * -1).ToString("F2")
                                                                            : importeIva.ToString("F2"))
                            ,
                            Renglon           = Convert.ToString(renglon),
                            ImporteIva        = gastoInventario.Importe.ToString("F2"),
                            ClaveImpuesto     = ClaveImpuesto,
                            CondicionImpuesto = CondicionImpuesto,
                            IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar,
                            Ref3             = ref3.ToString(),
                            Division         = organizacion.Division,
                            Cuenta           = organizacion.Iva.CuentaRecuperar.ClaveCuenta,
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = cuentaIva.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                        renglon++;
                        datos = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = gastoInventario.FechaGasto,
                            Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            Division         = organizacion.Division,
                            ClaveProveedor   = gastoInventario.Proveedor.CodigoSAP,
                            ClaseDocumento   = postFijoRef3,
                            Importe          = string.Format("{0}",
                                                             Cancelacion ? (gastoInventario.Importe + importeIva).ToString("F2")
                                                                            : ((gastoInventario.Importe + importeIva) * -1).ToString("F2")),
                            Renglon          = Convert.ToString(renglon),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                    }
                    if (tieneRetencion)
                    {
                        RetencionInfo retencion;
                        if (retenciones != null && retenciones.Any())
                        {
                            retencion =
                                retenciones.Where(
                                    costo => costo.CostoID.Equals(gastoInventario.Costo.CostoID)).
                                Select(ret => ret).FirstOrDefault();

                            if (retencion == null)
                            {
                                throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion));
                            }
                        }
                        else
                        {
                            throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion));
                        }
                        var parametrosRetencion = new StringBuilder();
                        parametrosRetencion.Append(String.Format("{0}{1}"
                                                                 , retencion.IndicadorRetencion
                                                                 , retencion.TipoRetencion));
                        var datos = new DatosPolizaInfo
                        {
                            NumeroReferencia  = numeroReferencia,
                            FechaEntrada      = gastoInventario.FechaGasto,
                            Folio             = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            Division          = organizacion.Division,
                            ClaveProveedor    = gastoInventario.Proveedor.CodigoSAP,
                            ClaseDocumento    = postFijoRef3,
                            IndicadorImpuesto = parametrosRetencion.ToString(),
                            Importe           = string.Format("{0}{1}",
                                                              Cancelacion ? string.Empty : "-",
                                                              "0"),
                            Renglon          = Convert.ToString(renglon),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            CodigoRetencion  = retencion.IndicadorImpuesto,
                            TipoRetencion    = retencion.IndicadorRetencion,
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                        if (!gastoInventario.IVA)
                        {
                            renglon++;
                            datos = new DatosPolizaInfo
                            {
                                NumeroReferencia = numeroReferencia,
                                FechaEntrada     = gastoInventario.FechaGasto,
                                Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                                Division         = organizacion.Division,
                                ClaveProveedor   = gastoInventario.Proveedor.CodigoSAP,
                                ClaseDocumento   = postFijoRef3,
                                Importe          = string.Format("{0}",
                                                                 Cancelacion
                                                                        ? gastoInventario.Importe.ToString("F2")
                                                                        : (gastoInventario.Importe * -1).ToString("F2"))
                                ,
                                Renglon          = Convert.ToString(renglon),
                                ImporteIva       = "0",
                                Ref3             = ref3.ToString(),
                                ArchivoFolio     = archivoFolio,
                                DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                                PesoOrigen       = 0,
                                TipoDocumento    = textoDocumento,
                                Concepto         =
                                    String.Format("{0}-{1},{2}", tipoMovimiento,
                                                  gastoInventario.FolioGasto
                                                  , complementoConcepto),
                                Sociedad = organizacion.Sociedad,
                                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                            };
                            polizaEntrada = GeneraRegistroPoliza(datos);
                            polizasGastosInventario.Add(polizaEntrada);
                            renglon++;
                            datos = new DatosPolizaInfo
                            {
                                NumeroReferencia = numeroReferencia,
                                FechaEntrada     = gastoInventario.FechaGasto,
                                Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                                Division         = organizacion.Division,
                                ClaseDocumento   = postFijoRef3,
                                Importe          = string.Format("{0}",
                                                                 Cancelacion
                                                                        ? (gastoInventario.Importe * -1).ToString("F2")
                                                                        : gastoInventario.Importe.ToString("F2")),
                                Renglon          = Convert.ToString(renglon),
                                ImporteIva       = "0",
                                Ref3             = ref3.ToString(),
                                Cuenta           = claveContableInfo.Valor,
                                ArchivoFolio     = archivoFolio,
                                DescripcionCosto = claveContableInfo.Descripcion,
                                PesoOrigen       = 0,
                                TipoDocumento    = textoDocumento,
                                Concepto         =
                                    String.Format("{0}-{1},{2}", tipoMovimiento,
                                                  gastoInventario.FolioGasto
                                                  , complementoConcepto),
                                Sociedad = organizacion.Sociedad,
                                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                            };
                            polizaEntrada = GeneraRegistroPoliza(datos);
                            polizasGastosInventario.Add(polizaEntrada);
                        }
                    }
                }
            }
            else
            {
                renglon++;
                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = gastoInventario.FechaGasto,
                    Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                    Division         = organizacion.Division,
                    ClaseDocumento   = postFijoRef3,
                    Importe          = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2")
                                                                               : gastoInventario.Importe.ToString("F2")),
                    Renglon          = Convert.ToString(renglon),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = claveContableInfo.Valor,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = claveContableInfo.Descripcion,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    Concepto         =
                        String.Format("{0}-{1},{2}", tipoMovimiento,
                                      gastoInventario.FolioGasto
                                      , complementoConcepto),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaEntrada = GeneraRegistroPoliza(datos);
                polizasGastosInventario.Add(polizaEntrada);

                renglon++;

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = gastoInventario.FechaGasto,
                    Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                    Division         = organizacion.Division,
                    ClaseDocumento   = postFijoRef3,
                    Importe          = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2")
                                                                           : (gastoInventario.Importe * -1).ToString("F2")),
                    CentroCosto      = gastoInventario.CentroCosto,
                    Renglon          = Convert.ToString(renglon),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = cuentaSapProvision.CuentaSAP,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = cuentaSapProvision.Descripcion,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    Concepto         =
                        String.Format("{0}-{1},{2}", tipoMovimiento,
                                      gastoInventario.FolioGasto
                                      , complementoConcepto),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaEntrada = GeneraRegistroPoliza(datos);
                polizasGastosInventario.Add(polizaEntrada);
            }
            return(polizasGastosInventario);
        }
예제 #20
0
        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);
        }
예제 #21
0
        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);
        }
예제 #22
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// para la generacion de la reimpresion
        /// de la poliza de Salida de Traspaso
        /// </summary>
        /// <param name="produccionFormula"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimpresionPolizaProduccionAlimento(ProduccionFormulaInfo produccionFormula, TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasProduccionAlimento = polizaBL.ObtenerPoliza(TipoPoliza.ProduccionAlimento,
                                                                                  produccionFormula.Organizacion.OrganizacionID,
                                                                                  produccionFormula.FechaProduccion,
                                                                                  produccionFormula.FolioFormula.ToString(CultureInfo.InvariantCulture),
                                                                                  polizaClave.ClavePoliza, 1);
            MemoryStream stream = null;

            if (polizasProduccionAlimento != null)
            {
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.ProduccionAlimento);
                var produccionFormulaBL = new ProduccionFormulaBL();
                using (var almacenDAL = new AlmacenDAL())
                {
                    var almacenMovimientoBL          = new AlmacenMovimientoBL();
                    ProduccionFormulaInfo produccion = produccionFormulaBL.ObtenerPorIDCompleto(produccionFormula.ProduccionFormulaId);


                    if (produccion != null)
                    {
                        AlmacenInfo almacenPlantaAlimento =
                            almacenDAL.ObtenerAlmacenOrganizacionTipo(produccionFormula.Organizacion.OrganizacionID, TipoAlmacenEnum.PlantaDeAlimentos);

                        AlmacenMovimientoInfo almacenMovimiento =
                            almacenMovimientoBL.ObtenerPorIDCompleto(produccion.AlmacenMovimientoSalidaID);

                        var produccionFormulaDetalles = new List <ProduccionFormulaDetalleInfo>();
                        if (almacenMovimiento != null)
                        {
                            foreach (var detalle in produccion.ProduccionFormulaDetalle)
                            {
                                var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault(
                                    alm => alm.Producto.ProductoId == detalle.Producto.ProductoId &&
                                    alm.AlmacenInventarioLoteId == detalle.AlmacenInventarioLoteID);

                                if (movimiento == null)
                                {
                                    continue;
                                }
                                detalle.CantidadProducto = movimiento.Cantidad;
                                detalle.PrecioPromedio   = movimiento.Precio;
                                produccionFormulaDetalles.Add(detalle);
                            }
                        }

                        if (almacenPlantaAlimento == null)
                        {
                            return(null);
                        }
                        produccion.ProduccionFormulaDetalle = produccionFormulaDetalles;
                        produccion.Almacen        = almacenPlantaAlimento;
                        polizasProduccionAlimento = poliza.GeneraPoliza(produccion);
                        stream = poliza.ImprimePoliza(produccion, polizasProduccionAlimento);
                    }
                }
            }
            return(stream);
        }
예제 #23
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// para la generacion de la reimpresion
        /// de la poliza de Salida de Traspaso
        /// </summary>
        /// <param name="folioSolicitud"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimpresionPolizaSalidaConsumo(FolioSolicitudInfo folioSolicitud, TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasSalidaConsumo = polizaBL.ObtenerPoliza(TipoPoliza.SalidaConsumo,
                                                                             folioSolicitud.OrganizacionID,
                                                                             folioSolicitud.FechaEntrega.HasValue ? folioSolicitud.FechaEntrega.Value : DateTime.MinValue,
                                                                             folioSolicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                                                                             polizaClave.ClavePoliza, 1);
            MemoryStream stream = null;

            if (polizasSalidaConsumo != null)
            {
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaConsumo);
                var solicitudProductoDAL = new SolicitudProductoDAL();
                using (var almacenDAL = new AlmacenDAL())
                {
                    var almacenMovimientoBL         = new AlmacenMovimientoBL();
                    SolicitudProductoInfo solicitud = solicitudProductoDAL.ObtenerPorID(folioSolicitud.FolioID);


                    if (solicitud != null)
                    {
                        AlmacenInfo almacenGeneral =
                            almacenDAL.ObtenerAlmacenGeneralOrganizacion(folioSolicitud.OrganizacionID);

                        AlmacenMovimientoInfo almacenMovimiento =
                            almacenMovimientoBL.ObtenerPorIDCompleto(solicitud.AlmacenMovimientoID.HasValue
                                                                 ? solicitud.AlmacenMovimientoID.Value
                                                                 : 0);

                        if (almacenMovimiento != null)
                        {
                            foreach (var detalle in solicitud.Detalle)
                            {
                                var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault(
                                    alm => alm.Producto.ProductoId == detalle.Producto.ProductoId);

                                if (movimiento == null)
                                {
                                    continue;
                                }
                                detalle.PrecioPromedio = movimiento.Precio;
                            }
                        }

                        if (almacenGeneral == null)
                        {
                            return(null);
                        }
                        solicitud.AlmacenGeneralID = almacenGeneral.AlmacenID;
                        polizasSalidaConsumo       = poliza.GeneraPoliza(solicitud);
                        stream = poliza.ImprimePoliza(solicitud, polizasSalidaConsumo);
                    }
                }
            }
            return(stream);
        }
예제 #24
0
        /// <summary>
        /// Obtiene los valores para la reimpresion de
        /// la poliza de Salida por Muerte
        /// </summary>
        /// <param name="animal"></param>
        /// <param name="fecha"></param>
        /// <param name="polizaClave"> </param>
        private MemoryStream ReimprimirPolizaMuerte(AnimalInfo animal, DateTime fecha
                                                    , TipoPolizaInfo polizaClave)
        {
            MemoryStream pdf                   = null;
            var          animalCostoBL         = new AnimalCostoBL();
            var          animalesGenerarPoliza = new List <AnimalInfo> {
                animal
            };
            List <AnimalCostoInfo> animalCosto = animalCostoBL.ObtenerCostosAnimal(animalesGenerarPoliza);

            var animalCostoAgrupado = (from costo in animalCosto
                                       group costo by new { costo.AnimalID, costo.CostoID }
                                       into agrupado
                                       select new AnimalCostoInfo
            {
                AnimalID = agrupado.Key.AnimalID,
                CostoID = agrupado.Key.CostoID,
                Importe = agrupado.Sum(cos => cos.Importe),
                FolioReferencia =
                    agrupado.Select(cos => cos.FolioReferencia).FirstOrDefault(),
                FechaCosto = agrupado.Select(cos => cos.FechaCosto).FirstOrDefault()
            }).ToList();

            animalCosto = animalCostoAgrupado;
            if (animalCosto.Any())
            {
                int organizacionID = animal.OrganizacionIDEntrada;
                int usuarioID      = animal.UsuarioCreacionID;
                animalCosto.ForEach(org =>
                {
                    org.OrganizacionID    = organizacionID;
                    org.UsuarioCreacionID = usuarioID;
                });
                var poliza   = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaMuerte);
                var polizaBL = new PolizaBL();
                for (int indexAnimal = 0; indexAnimal < animalesGenerarPoliza.Count; indexAnimal++)
                {
                    IList <PolizaInfo> polizaSalidaMuerte = polizaBL.ObtenerPoliza(TipoPoliza.SalidaMuerte,
                                                                                   organizacionID,
                                                                                   fecha,
                                                                                   animalesGenerarPoliza[indexAnimal].
                                                                                   AnimalID.ToString(),
                                                                                   polizaClave.ClavePoliza, 1);
                    animalCosto =
                        animalCosto.Where(id => id.AnimalID == animalesGenerarPoliza[indexAnimal].AnimalID).ToList();
                    if (animalCosto.Any())
                    {
                        animalCosto.ForEach(ani => ani.Arete = animalesGenerarPoliza[indexAnimal].Arete);
                    }
                    if (polizaSalidaMuerte == null)
                    {
                        if (animalCosto.Any(id => id.CostoID == 1))
                        {
                            organizacionID     = animal.OrganizacionIDEntrada;
                            polizaSalidaMuerte = poliza.GeneraPoliza(animalCosto);
                            polizaSalidaMuerte.ToList().ForEach(datos =>
                            {
                                datos.OrganizacionID         = organizacionID;
                                datos.UsuarioCreacionID      = usuarioID;
                                datos.ArchivoEnviadoServidor = 1;
                            });
                            polizaBL.GuardarServicioPI(polizaSalidaMuerte, TipoPoliza.SalidaMuerte);
                        }
                    }
                    else
                    {
                        polizaSalidaMuerte = poliza.GeneraPoliza(animalCosto);
                    }
                    if ((polizaSalidaMuerte != null && polizaSalidaMuerte.Any()) &&
                        animalCosto.Any(id => id.CostoID == 1))
                    {
                        pdf = poliza.ImprimePoliza(animalCosto, polizaSalidaMuerte);
                    }
                }
            }
            return(pdf);
        }
예제 #25
0
        /// <summary>
        /// Obtiene los valores para la reimpresion de
        /// la poliza de entrada de ganado
        /// </summary>
        /// <param name="entradaGanado"></param>
        /// <param name="polizaClave"> </param>
        private MemoryStream ReimprimirPolizaEntrada(EntradaGanadoInfo entradaGanado, TipoPolizaInfo polizaClave)
        {
            EntradaGanadoCosteoInfo entradaGanadoCosteo;
            var esGanadera            = false;
            var entradaGanadoCosteoBL = new EntradaGanadoCosteoBL();

            if (entradaGanado.TipoOrigen == TipoOrganizacion.Ganadera.GetHashCode())
            {
                var interfaceSalidaTraspasoBL = new InterfaceSalidaTraspasoBL();
                entradaGanadoCosteo =
                    interfaceSalidaTraspasoBL.ObtenerDatosInterfaceSalidaTraspaso(entradaGanado.OrganizacionID, entradaGanado.FolioOrigen);
                esGanadera = true;

                EntradaGanadoCosteoInfo entradaGanadoCosteoComplementoCostos
                    = entradaGanadoCosteoBL.ObtenerPorEntradaGanadoID(entradaGanado.EntradaGanadoID);
                entradaGanadoCosteo.ListaCostoEntrada.AddRange(entradaGanadoCosteoComplementoCostos.ListaCostoEntrada.Where(id => id.Costo.CostoID != 1));
            }
            else
            {
                entradaGanadoCosteo = entradaGanadoCosteoBL.ObtenerPorEntradaGanadoID(entradaGanado.EntradaGanadoID);
            }

            MemoryStream pdf = null;

            if (entradaGanadoCosteo != null)
            {
                if (!esGanadera)
                {
                    var          cuentaPL          = new CuentaBL();
                    const string CUENTA_INVENTARIO = "CTAINVTRAN";
                    entradaGanadoCosteo.ListaCostoEntrada.ForEach(costo =>
                    {
                        if (!string.IsNullOrWhiteSpace(costo.DescripcionCuenta))
                        {
                            return;
                        }
                        var claveContable = cuentaPL.ObtenerPorClaveCuentaOrganizacion(CUENTA_INVENTARIO,
                                                                                       entradaGanado.OrganizacionOrigenID);
                        if (claveContable != null)
                        {
                            costo.DescripcionCuenta = claveContable.Descripcion;
                        }
                    });
                }
                var contenedorCosteoEntrada = new ContenedorCosteoEntradaGanadoInfo
                {
                    EntradaGanado       = entradaGanado,
                    EntradaGanadoCosteo = entradaGanadoCosteo
                };
                PolizaAbstract poliza;
                var            tipoPoliza = esGanadera ? TipoPoliza.EntradaGanadoDurango : TipoPoliza.EntradaGanado;
                if (esGanadera)
                {
                    poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(tipoPoliza);
                }
                else
                {
                    poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(tipoPoliza);
                }
                var polizaBL       = new PolizaBL();
                int organizacionID = entradaGanado.OrganizacionID;

                IList <PolizaInfo> polizasEntrada = polizaBL.ObtenerPoliza(tipoPoliza, organizacionID,
                                                                           entradaGanado.FechaEntrada,
                                                                           entradaGanado.FolioEntrada.ToString(),
                                                                           polizaClave.ClavePoliza, 1);
                if (polizasEntrada != null)
                {
                    polizasEntrada = poliza.GeneraPoliza(contenedorCosteoEntrada);
                    pdf            = poliza.ImprimePoliza(contenedorCosteoEntrada, polizasEntrada);
                }
            }
            return(pdf);
        }
예제 #26
0
        /// <summary>
        /// Reimprime una poliza
        /// </summary>
        /// <param name="tipoPoliza"></param>
        /// <param name="polizaModel"></param>
        /// <param name="polizaClave"> </param>
        public MemoryStream ReimprimirPoliza(TipoPoliza tipoPoliza, ReimpresionPolizaModel polizaModel
                                             , TipoPolizaInfo polizaClave)
        {
            try
            {
                Logger.Info();
                MemoryStream pdf = null;
                switch (tipoPoliza)
                {
                case TipoPoliza.EntradaGanado:
                    pdf = ReimprimirPolizaEntrada(polizaModel.EntradaGanado, polizaClave);
                    break;

                case TipoPoliza.ConsumoProducto:
                    //pdf = ReimprimirPolizaConsumoProducto(polizaModel.Almacen, polizaClave);
                    break;

                case TipoPoliza.SalidaVenta:
                    pdf = ReimprimirPolizaVenta(polizaModel.VentaGanado, polizaClave);
                    break;

                case TipoPoliza.SalidaMuerte:
                    pdf = ReimprimirPolizaMuerte(polizaModel.Animal, polizaModel.Fecha, polizaClave);
                    break;

                case TipoPoliza.EntradaCompra:
                    pdf = ReimpresionPolizaCompra(polizaModel.ContenedorEntradaMateriaPrima, polizaClave);
                    break;

                case TipoPoliza.SalidaTraspaso:
                    pdf = ReimpresionPolizaSalidaTraspaso(polizaModel.SolicitudProducto, polizaClave);
                    break;

                case TipoPoliza.SalidaConsumo:
                    pdf = ReimpresionPolizaSalidaConsumo(polizaModel.SolicitudProducto, polizaClave);
                    break;

                case TipoPoliza.ProduccionAlimento:
                    pdf = ReimpresionPolizaProduccionAlimento(polizaModel.ProduccionFormula, polizaClave);
                    break;

                case TipoPoliza.SalidaVentaProducto:
                    pdf = ReimpresionSalidaVentaProducto(polizaModel.SalidaProducto, polizaClave);
                    break;
                }
                return(pdf);
            }
            catch (ExcepcionServicio)
            {
                throw;
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
예제 #27
0
        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);
        }
예제 #28
0
        /// <summary>
        /// Obtiene el flujo de datos
        /// para la generacion de la reimpresion
        /// de la poliza de consumo de producto
        /// </summary>
        /// <param name="almacenInfo"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimprimirPolizaConsumoProducto(AlmacenInfo almacenInfo, TipoPolizaInfo polizaClave)
        {
            MemoryStream pdf = null;

            //var polizaBL = new PolizaBL();
            //IList<PolizaInfo> polizasConsumoProducto = polizaBL.ObtenerPoliza(TipoPoliza.ConsumoProducto,
            //                                                                  almacenInfo.Organizacion.OrganizacionID,
            //                                                                  DateTime.Today,
            //                                                                  1.ToString(),
            //                                                                  polizaClave.ClavePoliza, 1);
            //if (polizasConsumoProducto != null && polizasConsumoProducto.Any())
            //{
            var almacenMovimientoInventarioBL = new AlmacenMovimientoBL();
            List <ContenedorAlmacenMovimientoCierreDia> contenedorMovimientoCierreDia =
                almacenMovimientoInventarioBL.ObtenerMovimientosInventario(almacenInfo.AlmacenID,
                                                                           almacenInfo.Organizacion.OrganizacionID);

            if (contenedorMovimientoCierreDia != null && contenedorMovimientoCierreDia.Any())
            {
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.ConsumoProducto);
                IList <PolizaInfo> polizaConsumo = poliza.GeneraPoliza(contenedorMovimientoCierreDia);
                if (polizaConsumo != null && polizaConsumo.Any())
                {
                    //poliza.GuardarArchivoXML(polizaConsumo, almacenInfo.Organizacion.OrganizacionID);
                    //pdf = poliza.ImprimePoliza(contenedorMovimientoCierreDia, polizaConsumo);
                }
            }
            //}
            return(pdf);
        }
예제 #29
0
        /// <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);
        }
예제 #30
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// para la generacion de la reimpresion
        /// de la poliza de pase a proceso
        /// </summary>
        /// <param name="pedidoInfo"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private IList <ResultadoPolizaModel> ReimpresionPolizaPaseProceso(PedidoInfo pedidoInfo, TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasVenta = polizaBL.ObtenerPoliza(TipoPoliza.PaseProceso,
                                                                     pedidoInfo.Organizacion.OrganizacionID,
                                                                     pedidoInfo.FechaPedido,
                                                                     pedidoInfo.FolioPedido.ToString(),
                                                                     polizaClave.ClavePoliza, 1);
            IList <ResultadoPolizaModel> resultadoPolizaModel = null;

            if (polizasVenta != null)
            {
                List <int> foliosPedidos = new List <int>();
                foreach (var polizaventas in polizasVenta)
                {
                    //PP-348-1 22,350  COSTOS
                    int indiceFolio = 1;
                    var conceptos   = polizaventas.Concepto.Split('-');

                    int folio;
                    int.TryParse(conceptos[indiceFolio], out folio);
                    if (folio > 0)
                    {
                        foliosPedidos.Add(folio);
                    }
                }
                foliosPedidos        = foliosPedidos.Distinct().ToList();
                resultadoPolizaModel = new List <ResultadoPolizaModel>();
                foreach (var folio in foliosPedidos)
                {
                    var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.PaseProceso);
                    var pesajeMateriaPrimaBL = new PesajeMateriaPrimaBL();
                    List <PolizaPaseProcesoModel> datosPoliza =
                        pesajeMateriaPrimaBL.ObtenerValoresPolizaPaseProcesoReimpresion(folio,
                                                                                        pedidoInfo.Organizacion.
                                                                                        OrganizacionID);
                    if (datosPoliza != null && datosPoliza.Any())
                    {
                        IList <PolizaPaseProcesoModel> polizasPaseProcesoModel;


                        datosPoliza =
                            datosPoliza.GroupBy(
                                prod => new { prod.Producto.ProductoId, prod.ProveedorChofer.ProveedorChoferID, prod.PesajeMateriaPrima.Ticket })
                            .Select(grupo => new PolizaPaseProcesoModel
                        {
                            Organizacion =
                                grupo.Select(org => org.Organizacion).FirstOrDefault(),
                            Almacen           = grupo.Select(alm => alm.Almacen).FirstOrDefault(),
                            Producto          = grupo.Select(pro => pro.Producto).FirstOrDefault(),
                            Proveedor         = grupo.Select(prov => prov.Proveedor).FirstOrDefault(),
                            AlmacenMovimiento =
                                grupo.Select(alm => alm.AlmacenMovimiento).FirstOrDefault(),
                            AlmacenMovimientoDetalle =
                                grupo.Select(alm => alm.AlmacenMovimientoDetalle).
                                FirstOrDefault(),
                            AlmacenInventarioLote =
                                grupo.Select(alm => alm.AlmacenInventarioLote).FirstOrDefault(),
                            FleteInterno =
                                grupo.Select(flete => flete.FleteInterno).FirstOrDefault(),
                            FleteInternoCosto =
                                grupo.Select(flete => flete.FleteInternoCosto).FirstOrDefault(),
                            Pedido             = grupo.Select(ped => ped.Pedido).FirstOrDefault(),
                            ProveedorChofer    = grupo.Select(prov => prov.ProveedorChofer).FirstOrDefault(),
                            PesajeMateriaPrima =
                                grupo.Select(pesaje => pesaje.PesajeMateriaPrima).
                                FirstOrDefault(),
                            ProgramacionMateriaPrima =
                                grupo.Select(prog => prog.ProgramacionMateriaPrima).
                                FirstOrDefault(),
                            ListaAlmacenMovimientoCosto = grupo.Select(prog => prog.ListaAlmacenMovimientoCosto).
                                                          FirstOrDefault(),
                        }).OrderBy(ticket => ticket.PesajeMateriaPrima.Ticket).ToList();
                        for (int indexPoliza = 0; indexPoliza < datosPoliza.Count; indexPoliza++)
                        {
                            polizasPaseProcesoModel = new List <PolizaPaseProcesoModel> {
                                datosPoliza[indexPoliza]
                            };
                            polizasVenta = poliza.GeneraPoliza(polizasPaseProcesoModel);
                            MemoryStream stream = poliza.ImprimePoliza(polizasPaseProcesoModel, polizasVenta);

                            PolizaPaseProcesoModel polizaActual = polizasPaseProcesoModel.FirstOrDefault();
                            string nomenclaturaArchivo          = string.Empty;
                            if (polizaActual != null)
                            {
                                nomenclaturaArchivo = String.Format("{0}-{1}", polizaActual.Pedido.FolioPedido,
                                                                    polizaActual.PesajeMateriaPrima.Ticket);
                            }
                            var resultadoPoliza = new ResultadoPolizaModel
                            {
                                NomenclaturaArchivo = nomenclaturaArchivo,
                                PDF = stream
                            };
                            //polizasVenta.ToList().ForEach(datos =>
                            //                                  {
                            //                                      datos.OrganizacionID = 1;
                            //                                      datos.UsuarioCreacionID = 1;
                            //                                  });
                            //polizaBL.Guardar(polizasVenta, TipoPoliza.PaseProceso);
                            resultadoPolizaModel.Add(resultadoPoliza);
                        }
                    }
                }
            }
            return(resultadoPolizaModel);
        }