private void GenerarLineas(AlbaranesService albaranesService, List <FacturasLinModel> lineas, IEnumerable <string> albaranesreferencia)
        {
            var list = albaranesreferencia.Where(f => CanImportarLinea(lineas, f));

            foreach (var item in list)
            {
                GenerarLinea(albaranesService, lineas, item);
            }
        }
        private void GenerarLinea(AlbaranesService albaranesService, List <FacturasLinModel> lineas, string referencia)
        {
            var albaran = albaranesService.GetByReferencia(referencia);

            albaran = albaranesService.get(albaran.Id.ToString()) as AlbaranesModel;
            //if (albaran.Lineas.Any(f => (f.Cantidad ?? 0) - (f.Cantidadpedida ?? 0) > 0)) - ANG - se quita la comprobación de cantidad pedida, el albaran siempre se factura entero
            if (albaran.Lineas.Any(f => (f.Cantidad ?? 0) != 0))
            {
                var maxId = lineas.Any() ? lineas.Max(f => f.Id) + 1 : 1;
                lineas.AddRange(ImportarLineas(albaran.Id, maxId, albaranesService.GetLineasImportarAlbaran(referencia)));
            }

            if (lineas.Count == 0)
            {
                throw new ValidationException("Los albaranes seleccionados no han generado ninguna linea");
            }
        }
        //public void GetVencimientoId(FacturasModel cabecera,    FacturasVencimientosModel item)
        //{
        //    var formapagoService = FService.Instance.GetService(typeof(FormasPagoModel), _context) as FormasPagoService;
        //    var formapagoObj = formapagoService.get(cabecera.Fkformaspago.ToString()) as FormasPagoModel;

        //    var clienteService = FService.Instance.GetService(typeof(ClientesModel), _context) as ClientesService;

        //    var clienteObj = clienteService.get(cabecera.Fkclientes) as ClientesModel;
        //    var monedasService = FService.Instance.GetService(typeof(MonedasModel), _context) as MonedasService;
        //    var monedasObj = monedasService.get(cabecera.Fkmonedas.ToString()) as MonedasModel;

        //    var diafijo1 = clienteObj.Diafijopago1;
        //    var diafijo2 = clienteObj.Diafijopago2;
        //    var fechaFactura = cabecera.Fechadocumento;
        //    var decimales = monedasObj.Decimales;

        //    item.Fechavencimiento = GetFechavencimiento(fechaFactura.Value, item.Diasvencimiento.Value, diafijo1,
        //        diafijo2, formapagoObj.ExcluirFestivos);
        //    item.Importevencimiento = Math.Round(item.Importevencimiento.Value, decimales);
        //    item.Decimalesmonedas = monedasObj.Decimales;
        //}

        #endregion

        #region Helper

        private void ModificarCantidadesPedidasAlbaranes(FacturasModel model, TipoOperacion tipo = TipoOperacion.Editar)
        {
            var AlbaranesService = new AlbaranesService(_context, _db);

            AlbaranesService.EjercicioId = EjercicioId;

            foreach (var item in model.Lineas)
            {
                var albaran = _db.Albaranes.Include("AlbaranesLin").Single(
                    f =>
                    f.empresa == model.Empresa && f.id == item.Fkalbaranes);

                foreach (var linea in albaran.AlbaranesLin)
                {
                    linea.cantidadpedida = tipo == TipoOperacion.Baja ? 0 : linea.cantidad;
                }
                var validationService = AlbaranesService._validationService as AlbaranesValidation;
                validationService.EjercicioId = EjercicioId;
                validationService.FlagActualizarCantidadesFacturadas = true;
                validationService.ValidarGrabar(albaran);
                _db.Albaranes.AddOrUpdate(albaran);
            }
            _db.SaveChanges();
        }