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); } } }
//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); } } }
//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); } } }
//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); } } }