private List <TransformacioneslotesLinModel> GenerarLineasConStock(List <TransformacioneslotesLinModel> listado, TransformacioneslotesLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId) { var stockactualService = new StockactualService(_context, _db); var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService; var familiasService = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService; var unidadesService = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService; var lotesService = new LotesService(_context); foreach (var linea in model.Lineas) { if (!listado.Any(f => f.Lote == linea.Lote && f.Tabla == Funciones.Qint(linea.Loteid))) { var stockObj = _db.Stockhistorico.Single( f => f.fkalmacenes == _context.Fkalmacen && f.empresa == _context.Empresa && f.lote == linea.Lote && f.loteid == linea.Loteid); var loteObj = lotesService.Get(stockObj.id.ToString()); articuloObj = articulosService.GetArticulo(linea.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo); var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(linea.Fkarticulos)) as FamiliasproductosModel; var ancho = linea.Ancho; var largo = linea.Largo; var grueso = linea.Grueso; var item = familiaObj.Gestionstock ? stockactualService.GetArticuloPorLoteOCodigo( string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)), model.Fkalmacen, Empresa) as MovimientosstockModel : null; if (model.Modificarmedidas) { ancho = model.Ancho; largo = model.Largo; grueso = model.Grueso; } else { ancho = item?.Ancho ?? linea.Ancho; largo = item?.Largo ?? linea.Largo; grueso = item?.Grueso ?? linea.Grueso; } if (linea.Cantidad > item.Cantidad) { throw new ValidationException(string.Format("La cantidad indicada para el lote {0} es superior a la que hay en el stock actual", string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)))); } var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel; var metros = UnidadesService.CalculaResultado(unidadesObj, articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad, largo, ancho, grueso, model.Metros); linea.Metros = metros; listado.Add(new TransformacioneslotesLinModel() { Id = maxId++, Fkarticulos = linea.Fkarticulos, Descripcion = articuloObj.Descripcion, Lote = linea.Lote, Tabla = Funciones.Qint(linea.Loteid), Cantidad = articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad, Largo = largo, Ancho = ancho, Grueso = grueso, Fkunidades = articuloObj.Fkunidades, Metros = metros, Decimalesmedidas = unidadesObj.Decimalestotales, Canal = model.Canal, Flagidentifier = Guid.NewGuid(), Precio = loteObj.Costenetocompra, Tipodealmacenlote = loteObj.Tipodealmacenlote } ); } } ValidarKit(listado, model); return(listado); }
private List <AlbaranesLinModel> GenerarLineasConStock(List <AlbaranesLinModel> listado, AlbaranesLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId) { var stockactualService = new StockactualService(_context, _db); var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService; var familiasService = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService; var unidadesService = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService; var tiposivaService = FService.Instance.GetService(typeof(TiposIvaModel), _context, _db) as TiposivaService; var monedasService = FService.Instance.GetService(typeof(MonedasModel), _context, _db) as MonedasService; var monedasObj = monedasService.get(model.Fkmonedas) as MonedasModel; foreach (var linea in model.Lineas) { if (!listado.Any(f => f.Lote == linea.Lote && f.Tabla == Funciones.Qint(linea.Loteid))) { articuloObj = articulosService.GetArticulo(linea.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo); var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(linea.Fkarticulos)) as FamiliasproductosModel; var ancho = linea.Ancho; var largo = linea.Largo; var grueso = linea.Grueso; var item = familiaObj.Gestionstock ? stockactualService.GetArticuloPorLoteOCodigo( string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)), model.Fkalmacen, Empresa) as MovimientosstockModel : null; if (model.Modificarmedidas) { ancho = model.Ancho; largo = model.Largo; grueso = model.Grueso; } else { ancho = item?.Ancho ?? linea.Ancho; largo = item?.Largo ?? linea.Largo; grueso = item?.Grueso ?? linea.Grueso; } if (linea.Cantidad > item.Cantidad) { throw new ValidationException(string.Format("La cantidad indicada para el lote {0} es superior a la que hay en el stock actual", string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)))); } var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel; var tiposivaObj = tiposivaService.get(articuloObj.Fktiposiva) as TiposIvaModel; var metros = UnidadesService.CalculaResultado(unidadesObj, articuloObj.Lotefraccionable ? model.Cantidad :linea.Cantidad, largo, ancho, grueso, model.Metros); linea.Metros = metros; var bruto = linea.Metros * model.Precio; var importedescuento = Math.Round(((bruto) * model.Descuento / 100.0), model.Decimalesmonedas); var total = bruto - importedescuento; listado.Add(new AlbaranesLinModel() { Nueva = true, Id = maxId++, Fkarticulos = linea.Fkarticulos, Descripcion = articuloObj.Descripcion, Lote = linea.Lote, Tabla = Funciones.Qint(linea.Loteid), Tblnum = Funciones.Qint(linea.Loteid), Cantidad = articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad, Largo = largo, Ancho = ancho, Grueso = grueso, Fkunidades = articuloObj.Fkunidades, Metros = metros, Precio = model.Precio, Porcentajedescuento = model.Descuento, Importedescuento = importedescuento, Importe = total, Decimalesmedidas = unidadesObj.Decimalestotales, Decimalesmonedas = monedasObj.Decimales, Fktiposiva = tiposivaObj.Id, Porcentajeiva = tiposivaObj.PorcentajeIva, Porcentajerecargoequivalencia = tiposivaObj.PorcentajeRecargoEquivalencia, Bundle = model.Tipopieza == TipoPieza.Bundle ? model.Lote.Replace(linea.Lote, string.Empty) : string.Empty, Caja = model.Caja, Canal = model.Canal, Flagidentifier = Guid.NewGuid() } ); } } ValidarKit(listado, model); return(listado); }
public List <TransformacioneslotesLinModel> GenerarLineasSinStock(List <TransformacioneslotesLinModel> listado, TransformacioneslotesLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId) { var familiasService = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService; var unidadesService = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService; var monedasService = FService.Instance.GetService(typeof(MonedasModel), _context, _db) as MonedasService; var monedasObj = monedasService.get(model.Fkmonedas) as MonedasModel; var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(model.Fkarticulos)) as FamiliasproductosModel; var ancho = model.Ancho; var largo = model.Largo; var grueso = model.Grueso; if (model.Modificarmedidas) { ancho = model.Ancho; largo = model.Largo; grueso = model.Grueso; } else { ancho = articuloObj.Ancho.Value; largo = articuloObj.Largo.Value; grueso = articuloObj.Grueso.Value; } var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel; var metros = UnidadesService.CalculaResultado(unidadesObj, model.Cantidad, largo, ancho, grueso, model.Metros); model.Metros = metros; listado.Add(new TransformacioneslotesLinModel() { Id = maxId++, Fkarticulos = model.Fkarticulos, Descripcion = articuloObj.Descripcion, Cantidad = model.Cantidad, Largo = largo, Ancho = ancho, Grueso = grueso, Fkunidades = articuloObj.Fkunidades, Metros = metros, Decimalesmedidas = unidadesObj.Decimalestotales, Decimalesmonedas = monedasObj.Decimales, Canal = model.Canal, } ); return(listado); }
public List <AlbaranesLinModel> GenerarLineasSinStock(List <AlbaranesLinModel> listado, AlbaranesLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId) { var familiasService = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService; var unidadesService = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService; var tiposivaService = FService.Instance.GetService(typeof(TiposIvaModel), _context, _db) as TiposivaService; var monedasService = FService.Instance.GetService(typeof(MonedasModel), _context, _db) as MonedasService; var monedasObj = monedasService.get(model.Fkmonedas) as MonedasModel; var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(model.Fkarticulos)) as FamiliasproductosModel; var ancho = model.Ancho; var largo = model.Largo; var grueso = model.Grueso; if (model.Modificarmedidas) { ancho = model.Ancho; largo = model.Largo; grueso = model.Grueso; } else { ancho = articuloObj.Ancho.Value; largo = articuloObj.Largo.Value; grueso = articuloObj.Grueso.Value; } var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel; var tiposivaObj = tiposivaService.get(articuloObj.Fktiposiva) as TiposIvaModel; var metros = UnidadesService.CalculaResultado(unidadesObj, model.Cantidad, largo, ancho, grueso, model.Metros); model.Metros = metros; var bruto = model.Metros * model.Precio; var importedescuento = Math.Round(((bruto) * model.Descuento / 100.0), model.Decimalesmonedas); var total = bruto - importedescuento; listado.Add(new AlbaranesLinModel() { Nueva = true, Id = maxId++, Fkarticulos = model.Fkarticulos, Descripcion = articuloObj.Descripcion, Cantidad = model.Cantidad, Largo = largo, Ancho = ancho, Grueso = grueso, Fkunidades = articuloObj.Fkunidades, Metros = metros, Precio = model.Precio, Porcentajedescuento = model.Descuento, Importedescuento = importedescuento, Importe = total, Decimalesmedidas = unidadesObj.Decimalestotales, Decimalesmonedas = monedasObj.Decimales, Fktiposiva = tiposivaObj.Id, Porcentajeiva = tiposivaObj.PorcentajeIva, Porcentajerecargoequivalencia = tiposivaObj.PorcentajeRecargoEquivalencia, Canal = model.Canal } ); return(listado); }