public void GenerarMovimientoAlmacen(string lote, string fkalmacen, string fkzona)
        {
            var service            = new MovimientosstockService(_context, _db);
            var stockactualService = new StockactualService(_context, _db);

            service.GenerarMovimiento(stockactualService.GetArticuloPorLoteOCodigo(lote, fkalmacen, _context.Empresa), TipoOperacionService.MovimientoAlmacen, fkzona);
        }
        //private void EliminarStock(ReservasstockModel nuevo)
        //{
        //    OperarStock(nuevo, TipoOperacionStock.Entrada, TipoOperacionService.EliminarReservaStock);
        //}

        #endregion

        #region Helper

        //private void OperarStock(ReservasstockModel nuevo, TipoOperacionStock operacion, TipoOperacionService serviciotipo)
        //{
        //    GenerarMovimientosLineas(nuevo, nuevo.Lineas, operacion, serviciotipo);
        //}

        private void GenerarMovimientosLineas(ReservasstockModel nuevo, List <ReservasstockLinModel> lineas, TipoOperacionService movimiento)
        //TipoOperacionStock operacion, TipoOperacionService serviciotipo)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <ReservasstockDiarioStockSerializable>();
            var vectorArticulos = new Hashtable();

            var operacion = 1;

            if (movimiento == TipoOperacionService.InsertarReservaStock)
            {
                operacion = -1;
            }

            foreach (var linea in lineas)
            {
                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <ReservasstockLinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel()
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = nuevo.Fkalmacen,
                        Fkalmaceneszona     = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Lote                = linea.Lote,
                        Loteid              = (linea.Tabla ?? 0).ToString(),
                        Tag                 = "",
                        Fkunidadesmedida    = linea.Fkunidades,
                        Cantidad            = (linea.Cantidad ?? 0) * operacion,
                        Largo               = linea.Largo ?? 0,
                        Ancho               = linea.Ancho ?? 0,
                        Grueso              = linea.Grueso ?? 0,
                        Metros              = (linea.Metros ?? 0) * operacion,
                        Documentomovimiento = serializer.GetXml(
                            new ReservasstockDiarioStockSerializable()
                        {
                            Id             = nuevo.Id,
                            Referencia     = nuevo.Referencia,
                            Fechadocumento = nuevo.Fechadocumento,
                            Codigocliente  = nuevo.Fkclientes,
                            Linea          = aux
                        }),
                        Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion
                        Tipomovimiento = movimiento
                    };

                    movimientosStockService.GenerarMovimiento(model, movimiento);
                }
            }
        }
Example #3
0
        //Generamos la pieza y decimos que tipo de operacion es
        private void GenerarMovimientosLineas(IEnumerable <ImputacionCostesLinModel> lineas, ImputacionCostesModel nuevo, TipoOperacionService movimiento)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <AlbaranesComprasDiarioStockSerializable>();
            var vectorArticulos = new Hashtable();

            //Cuando se eliminen costes, se multiplicara por -1
            var operacion = 1;

            if (movimiento == TipoOperacionService.EliminarCostes)
            {
                operacion = -1;
            }

            //para cada una de las lineas se genera un movimiento de stock//SON ARTICULOS!!!!!!
            foreach (var linea in lineas)
            {
                if (linea.Id == 12)
                {
                    var a = 3;
                }


                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <AlbaranesComprasLinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = _db.Stockhistorico.Where(f => f.empresa == Empresa && f.lote == linea.Lote && f.loteid == linea.Tabla.Value.ToString()).Select(f => f.fkalmacenes).SingleOrDefault(),
                        Fkalmaceneszona     = _db.Stockhistorico.Where(f => f.empresa == Empresa && f.lote == linea.Lote && f.loteid == linea.Tabla.Value.ToString()).Select(f => f.fkalmaceneszona).SingleOrDefault(),
                        Fkarticulos         = linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Fkcontadorlote      = linea.Fkcontadoreslotes,
                        Lote             = linea.Lote,
                        Loteid           = (linea.Tabla ?? 0).ToString(),
                        Tag              = "",
                        Fkunidadesmedida = linea.Fkunidades,
                        Largo            = linea.Largo ?? 0,
                        Ancho            = linea.Ancho ?? 0,
                        Grueso           = linea.Grueso ?? 0,

                        Documentomovimiento = serializer.GetXml(
                            new AlbaranesComprasDiarioStockSerializable
                        {
                            Id             = nuevo.Id.Value,
                            Referencia     = nuevo.Referencia,
                            Fechadocumento = nuevo.Fechadocumento,
                            //-----------------OPERARIO (NUEVO)-------------|->------
                            Codigoproveedor = nuevo.Fkoperarios,
                            Linea           = aux
                        }),
                        Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion
                        //Tipodealmacenlote = nuevo.Tipodealmacenlote,
                        Cantidad = (linea.Cantidad ?? 0) * operacion,
                        Metros   = (linea.Metros ?? 0) * operacion,
                        Pesoneto = ((articuloObj.Kilosud ?? 0) * linea.Metros) * operacion,
                        Costeadicionalmaterial = linea.Costeadicionalmaterial * operacion,
                        Costeadicionalotro     = linea.Costeadicionalotro * operacion,
                        Costeadicionalvariable = linea.Costeadicionalvariable * operacion,
                        Costeadicionalportes   = linea.Costeadicionalportes * operacion,

                        Tipomovimiento = movimiento //InsertarCostes o EliminarCostes
                    };

                    //la operacion es insertar los costes de imputacion costes
                    var operacionServicio = TipoOperacionService.InsertarImputacionCostes;

                    /*
                     * //Definimos la operacion de servicio
                     * var operacionServicio = linea.Nueva
                     *  ? TipoOperacionService.InsertarCostes
                     *  : TipoOperacionService.EliminarCostes;
                     */
                    /*
                     * if (nuevo.Tipoalbaranenum == TipoAlbaran.Devolucion)
                     * {
                     *  operacionServicio = linea.Nueva
                     *  ? TipoOperacionService.InsertarRecepcionStockDevolucion
                     *  : TipoOperacionService.ActualizarRecepcionStockDevolucion;
                     * }
                     */
                    movimientosStockService.GenerarMovimiento(model, operacionServicio);
                }
            }
        }
        //private void CrearStock(TraspasosalmacenModel nuevo)
        //{
        //    foreach (var item in nuevo.Lineas)
        //        item.Nueva = true;

        //    OperarStock(nuevo, TipoOperacionStock.Entrada);
        //}

        //private void ActualizarStock(TraspasosalmacenModel original, TraspasosalmacenModel nuevo)
        //{
        //    var list = new List<TraspasosalmacenLinModel>();
        //    var lineasModificadas = nuevo.Lineas.Where(f => !original.Lineas.Any(j => j.Flagidentifier == f.Flagidentifier)).ToList();

        //    var lineasEliminadas = original.Lineas.Where(f => !nuevo.Lineas.Where(j => !lineasModificadas.Any(h => h.Flagidentifier == f.Flagidentifier)).Any(j => j.Flagidentifier == f.Flagidentifier)).ToList();
        //    foreach (var item in lineasEliminadas)
        //        item.Cantidad *= -1;

        //    list = lineasModificadas.Union(lineasEliminadas).ToList();


        //    GenerarMovimientosLineas(list, nuevo, TipoOperacionStock.Actualizacion);
        //}

        //private void OperarStock(TraspasosalmacenModel nuevo, TipoOperacionStock operacion)
        //{
        //    GenerarMovimientosLineas(nuevo.Lineas, nuevo, operacion);

        //}

        private void GenerarMovimientosLineas(IEnumerable <TraspasosalmacenLinModel> lineas, TraspasosalmacenModel nuevo, TipoOperacionService movimiento)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <TraspasosalmacenDiarioStockSerializable>();
            var vectorArticulos = new Hashtable();

            var operacion = 1;

            if (movimiento == TipoOperacionService.EliminarTraspasosalmacen)
            {
                operacion = -1;
            }

            foreach (var linea in lineas)
            {
                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }
                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa = nuevo.Empresa,
                        //Fkalmacenes = nuevo.Fkalmacen,
                        Fkalmacenes     = nuevo.Fkalmacendestino,
                        Fkalmaceneszona = Funciones.Qint(nuevo.Fkzonas),
                        //Fkalmaceneszona = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Fkcontadorlote      = linea.Fkcontadoreslotes,
                        Lote                = linea.Lote,
                        Loteid              = (linea.Tabla ?? 0).ToString(),
                        Tag                 = "",
                        Fkunidadesmedida    = linea.Fkunidades,
                        Cantidad            = (linea.Cantidad ?? 0),
                        Largo               = linea.Largo ?? 0,
                        Ancho               = linea.Ancho ?? 0,
                        Grueso              = linea.Grueso ?? 0,
                        Metros              = linea.Metros ?? 0,
                        Documentomovimiento = serializer.GetXml(
                            new TraspasosalmacenDiarioStockSerializable
                        {
                            Id               = nuevo.Id,
                            Referencia       = nuevo.Referencia,
                            Fkalmacenorigen  = nuevo.Fkalmacen,
                            Fkalmacendestino = nuevo.Fkalmacendestino,
                            Linea            = linea
                        }),
                        Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion,
                        Costeadicionalmaterial = linea.Costeadicionalmaterial,
                        Costeadicionalotro     = linea.Costeadicionalotro,
                        Costeadicionalvariable = linea.Costeadicionalvariable,
                        Costeadicionalportes   = linea.Costeadicionalportes,

                        Tipomovimiento = movimiento
                    };

                    movimientosStockService.GenerarMovimiento(model, linea.Nueva ? TipoOperacionService.InsertarTraspasosalmacen : TipoOperacionService.ActualizarTraspasosalmacen);
                }
            }
        }
        //private void OperarStock(AlbaranesModel nuevo, TipoOperacionStock operacion, TipoOperacionService serviciotipo)
        //{
        //   GenerarMovimientosLineas(nuevo.Lineas, nuevo, operacion);
        //}


        private void GenerarMovimientosLineas(IEnumerable <AlbaranesLinModel> lineas, AlbaranesModel nuevo, TipoOperacionService movimiento)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <AlbaranesDiarioStockSerializable>();
            var vectorArticulos = new Hashtable();

            //jmm
            var operacion = 1;

            if (movimiento == TipoOperacionService.InsertarEntregaStock || movimiento == TipoOperacionService.InsertarDevolucionEntregaStock)
            {
                operacion = -1;
            }

            foreach (var linea in lineas)
            {
                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <AlbaranesLinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = nuevo.Fkalmacen,
                        Fkalmaceneszona     = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Lote             = linea.Lote,
                        Loteid           = (linea.Tabla ?? 0).ToString(),
                        Tag              = "",
                        Fkunidadesmedida = linea.Fkunidades,
                        Largo            = linea.Largo ?? 0,
                        Ancho            = linea.Ancho ?? 0,
                        Grueso           = linea.Grueso ?? 0,

                        Documentomovimiento = serializer.GetXml(
                            new AlbaranesDiarioStockSerializable
                        {
                            Id             = nuevo.Id,
                            Referencia     = nuevo.Referencia,
                            Fechadocumento = nuevo.Fechadocumento,
                            Codigocliente  = nuevo.Fkclientes,
                            Linea          = aux
                        }),
                        Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion,
                        Tipodealmacenlote = nuevo.Tipodealmacenlote,


                        Cantidad = !String.Equals(linea.Fkunidades, "08") ? (linea.Cantidad ?? 0) * operacion : 0, ///*-1,
                        Metros   = (linea.Metros ?? 0) * operacion,

                        //Pesoneto = ((articuloObj.Kilosud ?? 0) * linea.Metros) * operacion,
                        Costeadicionalmaterial = linea.Costeadicionalmaterial * operacion,
                        Costeadicionalotro     = linea.Costeadicionalotro * operacion,
                        Costeadicionalvariable = linea.Costeadicionalvariable * operacion,
                        Costeadicionalportes   = linea.Costeadicionalportes * operacion,

                        Tipomovimiento = movimiento
                    };

                    ////cantidad
                    //if(nuevo.Tipoalbaran == (int)TipoAlbaran.Reclamacion && linea.Cantidad < 0)
                    //{
                    //    model.Cantidad = !String.Equals(linea.Fkunidades, "08") ? (linea.Cantidad ?? 0) * operacion : 0;
                    //}

                    //else {
                    //    model.Cantidad = linea.Cantidad.Value;
                    //}

                    ////metros
                    //if (nuevo.Tipoalbaran == (int)TipoAlbaran.Reclamacion && linea.Cantidad < 0)
                    //{
                    //    model.Metros = (linea.Metros ?? 0) * operacion;
                    //}

                    //else
                    //{
                    //    model.Metros = linea.Metros.Value;
                    //}

                    var operacionServicio = linea.Nueva
                        ? TipoOperacionService.InsertarEntregaStock
                        : TipoOperacionService.ActualizarEntregaStock;
                    if (nuevo.Tipoalbaranenum == TipoAlbaran.Devolucion)
                    {
                        operacionServicio = linea.Nueva
                        ? TipoOperacionService.InsertarDevolucionEntregaStock
                        : TipoOperacionService.ActualizarEntregaStockDevolucion;
                    }

                    if (nuevo.Tipoalbaranenum == TipoAlbaran.Reclamacion && linea.Cantidad < 0)
                    {
                        operacionServicio = TipoOperacionService.InsertarDevolucionEntregaStock;
                    }
                    if (nuevo.Tipoalbaranenum == TipoAlbaran.Reclamacion && linea.Cantidad > 0)
                    {
                        operacionServicio = TipoOperacionService.InsertarEntregaStock;
                    }

                    movimientosStockService.GenerarMovimiento(model, operacionServicio);
                }
            }
        }
        private void GenerarMovimientosLineasCostes(IEnumerable <TransformacioneslotesLinModel> lineas, TransformacioneslotesModel nuevo, TipoOperacionService movimiento, TrabajosModel trabajosObj, bool finalizarstock = false)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <TransformacioneslotesDiarioStockSerializable>();
            var vectorArticulos = new Hashtable();

            var operacion = 1;

            if (movimiento == TipoOperacionService.EliminarCostes)
            {
                operacion = -1;
            }

            foreach (var linea in lineas)
            {
                var codigoarticulonuevo = linea.Fkarticulos;

                if (!string.IsNullOrEmpty(trabajosObj.Fkacabadofinal))
                {
                    codigoarticulonuevo = string.Format("{0}{1}{2}{3}{4}", ArticulosService.GetCodigoFamilia(linea.Fkarticulos),
                                                        ArticulosService.GetCodigoMaterial(linea.Fkarticulos), ArticulosService.GetCodigoCaracteristica(linea.Fkarticulos),
                                                        ArticulosService.GetCodigoGrosor(linea.Fkarticulos), trabajosObj.Fkacabadofinal);
                    if (!articulosService.exists(codigoarticulonuevo))
                    {
                        throw new Exception(string.Format("El articulo {0} no existe", codigoarticulonuevo));
                    }
                }

                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <TransformacionesloteslinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = nuevo.Fkalmacen.ToString(),
                        Fkalmaceneszona     = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = codigoarticulonuevo, //linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Fkcontadorlote      = linea.Fkcontadoreslotes,
                        Lote             = linea.Lote,
                        Loteid           = (linea.Tabla ?? 0).ToString(),
                        Tag              = "",
                        Fkunidadesmedida = linea.Fkunidades,
                        //Cantidad = 0,
                        //Largo = linea.Largo ?? 0,
                        //Ancho = linea.Ancho ?? 0,
                        //Grueso = linea.Grueso ?? 0,
                        //Metros = (linea.Metros ?? 0) * operacion,
                        //Pesoneto = ((articuloObj.Kilosud ?? 0) * linea.Metros) * operacion,
                        Documentomovimiento = serializer.GetXml(
                            new TransformacioneslotesDiarioStockSerializable
                        {
                            Id              = nuevo.Id ?? 0,
                            Referencia      = nuevo.Referencia,
                            Fechadocumento  = nuevo.Fechadocumento,
                            Codigoproveedor = nuevo.Fkproveedores,
                            Linea           = aux
                        }),
                        //Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion,
                        Costeadicionalmaterial = linea.Costeadicionalmaterial * operacion,
                        Costeadicionalotro     = linea.Costeadicionalotro * operacion,
                        Costeadicionalvariable = linea.Costeadicionalvariable * operacion,
                        Costeadicionalportes   = linea.Costeadicionalportes * operacion,
                        Tipodealmacenlote      = linea.Tipodealmacenlote,

                        Tipomovimiento = movimiento
                    };

                    movimientosStockService.GenerarMovimiento(model, movimiento);
                }
            }
        }
        private void GenerarMovimientosLineas(IEnumerable <TransformacioneslotesLinModel> lineas, TransformacioneslotesModel nuevo, TipoOperacionService movimiento, TrabajosModel trabajosObj, MaterialesModel materialesObj, bool finalizarstock = false)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db);
            var serializer      = new Serializer <TransformacioneslotesDiarioStockSerializable>();
            var vectorArticulos = new Hashtable();

            var operacion = 1;

            if (movimiento == TipoOperacionService.InsertarTransformacionloteStock)
            {
                operacion = -1;
            }

            //Rai
            // Ordenamos lineas por articulo y cantidad para procesar primero las positivas evitando error stock negativo no autorizado
            // (ya que se procesan las lineas antes existentes con cantidad negativa para quitarlas
            //   y luego se aƱade las lineas de grid cantidad +)
            var mylineas = lineas.OrderBy(x => x.Fkarticulos).ThenByDescending(x => x.Cantidad).ToList();

            foreach (var linea in mylineas)
            {
                //Rai -- sustituye el codigo del acabado y el codigo del material en caso de que sea necesario
                var codigoarticulonuevo = linea.Fkarticulos;
                var acabado             = !string.IsNullOrEmpty(trabajosObj.Fkacabadofinal) ? trabajosObj.Fkacabadofinal : ArticulosService.GetCodigoAcabado(linea.Fkarticulos);
                var material            = !string.IsNullOrEmpty(materialesObj.Id) ? materialesObj.Id : ArticulosService.GetCodigoMaterial(linea.Fkarticulos);

                codigoarticulonuevo = string.Format("{0}{1}{2}{3}{4}", ArticulosService.GetCodigoFamilia(linea.Fkarticulos),
                                                    material, ArticulosService.GetCodigoCaracteristica(linea.Fkarticulos),
                                                    ArticulosService.GetCodigoGrosor(linea.Fkarticulos), acabado);

                if (!articulosService.exists(codigoarticulonuevo))
                {
                    throw new Exception(string.Format("El articulo {0} no existe", codigoarticulonuevo));
                }

                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <TransformacionesloteslinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = nuevo.Fkalmacen,
                        Fkalmaceneszona     = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = codigoarticulonuevo, //linea.Fkarticulos
                        Referenciaproveedor = "",
                        Fkcontadorlote      = linea.Fkcontadoreslotes,
                        Lote                = linea.Lote,
                        Loteid              = (linea.Tabla ?? 0).ToString(),
                        Tag                 = "",
                        Fkunidadesmedida    = linea.Fkunidades,
                        Largo               = linea.Largo ?? 0,
                        Ancho               = linea.Ancho ?? 0,
                        Grueso              = linea.Grueso ?? 0,
                        Documentomovimiento = serializer.GetXml(
                            new TransformacioneslotesDiarioStockSerializable
                        {
                            Id               = nuevo.Id.Value,
                            Referencia       = nuevo.Referencia,
                            Fechadocumento   = nuevo.Fechadocumento,
                            Codigoproveedor  = nuevo.Fkproveedores,
                            Fkarticulosnuevo = codigoarticulonuevo,
                            Linea            = aux
                        }),
                        Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion,

                        Cantidad = (linea.Cantidad ?? 0) * operacion,
                        Metros   = (linea.Metros ?? 0) * operacion,
                        Costeadicionalmaterial = linea.Costeadicionalmaterial,
                        Costeadicionalotro     = linea.Costeadicionalotro,
                        Costeadicionalvariable = linea.Costeadicionalvariable,
                        Costeadicionalportes   = linea.Costeadicionalportes,

                        Tipomovimiento = movimiento
                    };

                    var tipooperacion = finalizarstock
                        ? TipoOperacionService.FinalizarTransformacionloteStock
                        : linea.Nueva
                            ? TipoOperacionService.InsertarTransformacionloteStock
                            : TipoOperacionService.ActualizarTransformacionloteStock;
                    var currentValidationService = _validationService as TransformacioneslotesValidation;


                    if (currentValidationService.ModificarCostes)
                    {
                        tipooperacion = TipoOperacionService.ActualizarcosteTransformacionloteStock;
                    }


                    if (tipooperacion == TipoOperacionService.InsertarTransformacionloteStock)
                    {
                        model.Cantidad = -model.Cantidad;
                    }
                    movimientosStockService.GenerarMovimiento(model, tipooperacion);
                }
            }
        }
Example #8
0
        //GENERAR MOVIMIENTOS DE ENTRADA
        private void GenerarMovimientosLineasEntrada(IEnumerable <DivisionLotesentradaLinModel> lineas, DivisionLotesModel nuevo, TipoOperacionService movimiento)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <DivisionLotesEntradaSerializable>();
            var vectorArticulos = new Hashtable();

            var operacion = 1;


            foreach (var linea in lineas)
            {
                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <DivisionLotesEntradaLinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = nuevo.Fkalmacen.ToString(),
                        Fkalmaceneszona     = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Fkcontadorlote      = "",
                        Lote             = linea.Lote,
                        Loteid           = (linea.Tabla ?? 0).ToString(),
                        Tag              = "",
                        Fkunidadesmedida = linea.Fkunidades,
                        Cantidad         = (linea.Cantidad ?? 0) * operacion,
                        Largo            = linea.Largo ?? 0,
                        Ancho            = linea.Ancho ?? 0,
                        Grueso           = linea.Grueso ?? 0,
                        Metros           = (linea.Metros ?? 0) * operacion,

                        Pesoneto            = ((articuloObj.Kilosud ?? 0) * linea.Metros) * operacion,
                        Documentomovimiento = serializer.GetXml(
                            new DivisionLotesEntradaSerializable
                        {
                            Id              = nuevo.Id ?? 0,
                            Referencia      = nuevo.Referencia,
                            Fechadocumento  = nuevo.Fechadocumento,
                            Codigoproveedor = "",
                            Linea           = aux
                        }),
                        Fkusuarios = Usuarioid,
                        //Tipooperacion = operacion,
                        Costeadicionalmaterial = linea.Costeadicionalmaterial,
                        Costeadicionalotro     = linea.Costeadicionalotro,
                        Costeadicionalvariable = linea.Costeadicionalvariable,
                        Costeadicionalportes   = linea.Costeadicionalportes,
                        Tipodealmacenlote      = linea.Tipodealmacenlote,
                        Tipomovimiento         = movimiento
                    };

                    movimientosStockService.GenerarMovimiento(model, TipoOperacionService.InsertarDivisionLotesEntradaStock);
                }
            }
        }
Example #9
0
        //GENERAR MOVIMIENTOS DE SALIDA
        private void GenerarMovimientosLineasSalida(IEnumerable <DivisionLotessalidaLinModel> lineas, DivisionLotesModel nuevo, TipoOperacionService movimiento)//, TipoOperacionService serviciotipo = null)
        {
            var movimientosStockService = new MovimientosstockService(_context, _db);
            var articulosService        = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var serializer      = new Serializer <DivisionLotesSalidaSerializable>();
            var vectorArticulos = new Hashtable();

            //LA CANTIDAD SERA POSITIVA SI QUITAMOS ESE LOTE DEL STOCK Y NEGATIVA SI LO INTRODUCIMOS (LA SALIDA)
            var operacion = 1;

            if (movimiento == TipoOperacionService.InsertarDivisionLotesSalidaStock)
            {
                operacion = -1;
            }

            foreach (var linea in lineas)
            {
                ArticulosModel articuloObj;
                if (vectorArticulos.ContainsKey(linea.Fkarticulos))
                {
                    articuloObj = vectorArticulos[linea.Fkarticulos] as ArticulosModel;
                }
                else
                {
                    articuloObj = articulosService.get(linea.Fkarticulos) as ArticulosModel;
                    vectorArticulos.Add(linea.Fkarticulos, articuloObj);
                }

                var aux = Funciones.ConverterGeneric <DivisionLotesSalidaLinSerialized>(linea);

                if (articuloObj?.Gestionstock ?? false)
                {
                    var model = new MovimientosstockModel
                    {
                        Empresa             = nuevo.Empresa,
                        Fkalmacenes         = nuevo.Fkalmacen.ToString(),
                        Fkalmaceneszona     = Funciones.Qint(nuevo.Fkzonas),
                        Fkarticulos         = linea.Fkarticulos,
                        Referenciaproveedor = "",
                        Lote                = linea.Lote,
                        Loteid              = (linea.Tabla ?? 0).ToString(),
                        Tag                 = "",
                        Fkunidadesmedida    = linea.Fkunidades,
                        Cantidad            = (linea.Cantidad ?? 0) * operacion,
                        Largo               = linea.Largo ?? 0,
                        Ancho               = linea.Ancho ?? 0,
                        Grueso              = linea.Grueso ?? 0,
                        Metros              = (linea.Metros ?? 0) * operacion,
                        Pesoneto            = ((articuloObj.Kilosud ?? 0) * linea.Metros) * operacion,
                        Documentomovimiento = serializer.GetXml(
                            new DivisionLotesSalidaSerializable
                        {
                            Id             = nuevo.Id ?? 0,
                            Referencia     = nuevo.Referencia,
                            Fechadocumento = nuevo.Fechadocumento,
                            Linea          = aux
                        }),
                        Fkusuarios        = Usuarioid,
                        Tipodealmacenlote = linea.Tipodealmacenlote,
                        Tipomovimiento    = movimiento
                    };
                    movimientosStockService.GenerarMovimiento(model, movimiento);
                }
            }
        }