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;
        }
Esempio n. 2
0
        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();
     }
 }
Esempio n. 4
0
        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()
            });
        }
Esempio n. 6
0
 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);
                }
            }
        }
Esempio n. 8
0
        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());
        }