private void ImportarCabecera(AlbaranesModel presupuesto, string serie, string fecha, FacturasModel result) { var properties = typeof(FacturasModel).GetProperties(); foreach (var item in properties) { if (item.Name != "Lineas" && item.Name != "Totales") { var property = typeof(AlbaranesModel).GetProperty(item.Name); if (property != null && property.CanWrite) { var value = property.GetValue(presupuesto); item.SetValue(result, value); } } } result.Fechadocumento = DateTime.Parse(fecha); result.Fkseries = serie; var appService = new ApplicationHelper(_context); result.Fkestados = appService.GetConfiguracion().Estadofacturasventasinicial; var decimalesmonedas = _db.Monedas.Single(f => f.id == result.Fkmonedas.Value).decimales; result.Decimalesmonedas = decimalesmonedas.Value; }
private List <ILineaImportar> GetLineas(AlbaranesModel albaran, AlbaranesService service, MarfilEntities db) { var agrupacionService = FService.Instance.GetService(typeof(CriteriosagrupacionModel), service._context, db) as CriteriosagrupacionService; var criterio = agrupacionService.get(albaran.Fkcriteriosagrupacion) as CriteriosagrupacionModel; var id = 1; var cadenaAnterior = ""; var result = new List <ILineaImportar>(); foreach (var linea in albaran.Lineas.OrderBy(f => f.Orden)) { var cadenaActual = CreateIdCadena(criterio, linea); if (cadenaAnterior == cadenaActual) { EditarLineaImportar(result[result.Count - 1], linea, criterio); } else { var nuevalinea = CreateLineaImportar(id++, albaran, linea); result.Add(nuevalinea); } cadenaAnterior = cadenaActual; } return(result); }
public void SaldarPedidos(OperacionSaldarPedidosModel model, AlbaranesModel entrega) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { entrega.Pedidosaldado = true; SaldarLineaPedidos(model); edit(entrega); _db.SaveChanges(); tran.Complete(); } }
private string GenerarCadena(string referencia, AlbaranesModel albaran, AlbaranesService service, MarfilEntities db) { var sb = new StringBuilder(); string agrupacion; var columnas = GenerarColumnas(referencia, out agrupacion, albaran, service, db); sb.AppendFormat("select {0} from albaraneslin as al inner join albaranes as a on a.empresa=@empresa and a.referencia=@referencia and a.id=al.fkalbaranes and a.empresa=al.empresa left join articulos as art on art.id=al.fkarticulos where al.empresa=@empresa {1}", columnas, agrupacion); return(sb.ToString()); }
private AlbaranesLinVistaModel GenerarModeloLin(AlbaranesModel albaranObj, string lote) { var serviceStock = 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 obj = serviceStock.GetArticuloPorLoteOCodigo(lote, albaranObj.Fkalmacen, albaranObj.Empresa) as MovimientosstockModel; if (obj != null) { var fkarticulos = obj.Fkarticulos; var articulosObj = articulosService.GetArticulo(fkarticulos, albaranObj.Fkclientes, albaranObj.Fkmonedas.ToString(), albaranObj.Fkregimeniva, TipoFlujo.Venta); var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(fkarticulos)) as FamiliasproductosModel; var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel; var metros = UnidadesService.CalculaResultado(unidadesObj, obj.Cantidad, obj.Largo, obj.Ancho, obj.Grueso, obj.Metros); obj.Metros = metros; return(new AlbaranesLinVistaModel() { Modificarmedidas = false, Lote = lote, Decimalesmonedas = albaranObj.Decimalesmonedas, Descuentocomercial = albaranObj.Porcentajedescuentocomercialcadena, Descuentoprontopago = albaranObj.Porcentajedescuentoprontopagocadena, Fkcuenta = albaranObj.Fkclientes, Fkmonedas = albaranObj.Fkmonedas.ToString(), Flujo = TipoFlujo.Venta, Fkregimeniva = albaranObj.Fkregimeniva, Portes = albaranObj.Costeportes.ToString(), Fkalmacen = albaranObj.Fkalmacen, Descuento = 0, Precio = articulosObj.Precio ?? 0, Fkarticulos = fkarticulos, Lineas = new List <MovimientosstockModel>(new [] { obj }) }); } return(new AlbaranesLinVistaModel() { Fkmonedas = albaranObj.Fkmonedas.ToString() }); }
private ILineaImportar CreateLineaImportar(int id, AlbaranesModel albaran, AlbaranesLinModel linea) { return(new LineaImportarModel() { Id = id, Canal = linea.Canal, Cantidad = linea.Cantidad ?? 0, Cuotaiva = linea.Cuotaiva ?? 0, Cuotarecargoequivalencia = linea.Cuotarecargoequivalencia ?? 0, Decimalesmedidas = linea.Decimalesmedidas ?? 0, Decimalesmonedas = linea.Decimalesmonedas ?? 0, Descripcion = linea.Descripcion, Fkregimeniva = linea.Fkregimeniva, Fkunidades = linea.Fkunidades, Metros = linea.Metros ?? 0, Precio = linea.Precio ?? 0, Fkarticulos = linea.Fkarticulos, Fktiposiva = linea.Fktiposiva, Ancho = linea.Ancho, Grueso = linea.Grueso, Largo = linea.Largo, Importe = linea.Importe ?? 0, Importedescuento = linea.Importedescuento ?? 0, Porcentajedescuento = linea.Porcentajedescuento ?? 0, Porcentajeiva = linea.Porcentajeiva ?? 0, Porcentajerecargoequivalencia = linea.Porcentajerecargoequivalencia ?? 0, Lote = linea.Lote, Notas = string.Empty,//Funciones.Qnull(row["Notas"]), Precioanterior = 0, Revision = "", Tabla = null, Fkdocumento = albaran.Id.ToString(), Fkdocumentoid = "", Fkdocumentoreferencia = "" }); }
//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 string GenerarColumnas(string referencia, out string agrupacion, AlbaranesModel albaran, AlbaranesService service, MarfilEntities db) { var agrupacionService = FService.Instance.GetService(typeof(CriteriosagrupacionModel), service._context, db) as CriteriosagrupacionService; var criterio = agrupacionService.get(albaran.Fkcriteriosagrupacion) as CriteriosagrupacionModel; var sb = new StringBuilder(); if (criterio.Lineas.Any()) { var lineas = criterio.Lineas.OrderBy(f => f.Orden); agrupacion = lineas.Any() ? "Group by " : string.Empty; agrupacion += string.Join(",", lineas.Select(f => "al." + f.Campoenum.ToString())); if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Fkarticulos)) { agrupacion += ",al.Fkarticulos"; } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Precio)) { agrupacion += ",al.Precio"; } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Porcentajedescuento)) { agrupacion += ",al.Porcentajedescuento"; } agrupacion += ",al.empresa,al.Fkunidades,al.Fktiposiva,al.Sello,al.Caja,al.Pesoneto,al.Porcentajerecargoequivalencia,al.Porcentajeiva,al.Decimalesmedidas,al.Decimalesmonedas"; sb.Append(" al.Descripcion as Descripcion,Min(al.Id) as Id,Sum(al.cantidad) as Cantidad,sum(al.Metros) as Metros,al.Porcentajeiva,Sum(al.Cuotaiva) as Cuotaiva," + " al.Porcentajerecargoequivalencia,sum(al.Cuotarecargoequivalencia) as Cuotarecargoequivalencia,'" + albaran.Fkregimeniva + "' as Fkregimeniva," + " al.Fkunidades, al.Fktiposiva, al.Sello, al.Caja, al.Pesoneto, Sum(al.Importe) as Importe,Sum(al.importedescuento) as Importedescuento,al.Decimalesmedidas,al.Decimalesmonedas, " + string.Join(",", lineas.Select(f => "al." + f.Campoenum.ToString()))); if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Fkarticulos)) { sb.Append(", al.Fkarticulos"); } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Precio)) { sb.Append(", al.Precio"); } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Porcentajedescuento)) { sb.Append(", al.Porcentajedescuento"); } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Descripcion)) { sb.Append(", (select top 1 art.descripcion from articulos as art where art.id=al.fkarticulos and art.empresa=al.empresa) as Descripcion"); } var cadenaCondiciones = ""; var vectorAgrupacion = agrupacion.Replace("Group by", "").Split(','); foreach (var item in vectorAgrupacion) { cadenaCondiciones += " and isnull(" + item + ",-1)= isnull(" + item.Replace("al.", "al2.") + ",-1) "; } var cadenaFormat = ", (select (case when count(distinct al2.{0}) >1 then 0 else min(al2.{0}) end) from albaraneslin as al2 where al2.empresa=@empresa and al2.fkalbaranes={2} {3} {1}) as {0} "; if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Largo)) { sb.AppendFormat(cadenaFormat, CamposAgrupacionAlbaran.Largo, agrupacion.Replace("al.", "al2."), albaran.Id, cadenaCondiciones); } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Ancho)) { sb.AppendFormat(cadenaFormat, CamposAgrupacionAlbaran.Ancho, agrupacion.Replace("al.", "al2."), albaran.Id, cadenaCondiciones); } if (!lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Grueso)) { sb.AppendFormat(cadenaFormat, CamposAgrupacionAlbaran.Grueso, agrupacion.Replace("al.", "al2."), albaran.Id, cadenaCondiciones); } } else { agrupacion = string.Empty; sb.Append(" al.*,a.Fkregimeniva"); } return(sb.ToString()); }