Example #1
0
        /// <summary>
        /// Retourne les ClientAFacturer de tous les clients ayant des commandes livrées non facturées
        /// contenant les CommandeAFacturer sans Détails
        /// </summary>
        /// <param name="site"></param>
        /// <returns></returns>
        public async Task <AFacturer> AFacturer(Site site)
        {
            IQueryable <Livraison> q_livraisonsTerminées = _context.Livraison.Where(l => l.Uid == site.Uid && l.Rno == site.Rno && l.Date.HasValue);
            IQueryable <Commande>  q_commandesAvecNoLivraisonNonFacturées = _utile.CommandesAvecDétailsLivraisonEtFacture(
                filtreCommande: null, filtreDétails: null, filtreRole: null, keySite: site)
                                                                            .Where(c => c.Livraison != null && c.Livraison.Date.HasValue && !c.Livraison.FactureNo.HasValue);
            var q_liv_comAFacturer = q_livraisonsTerminées.Join(q_commandesAvecNoLivraisonNonFacturées,
                                                                l => l.No, c => c.LivraisonNo, (l, c) => new { livraison = l, commande = c });

            List <LivraisonAFacturer> livraisonsAFacturer = await q_liv_comAFacturer
                                                            .Select(lc => lc.livraison)
                                                            .GroupBy(lc => lc.No, (no, livraisons) => livraisons.First())
                                                            .Select(l => new LivraisonAFacturer {
                No = l.No, Date = l.Date.Value
            })
                                                            .ToListAsync();

            var commandesAFacturerGroupéesParKey = await q_liv_comAFacturer
                                                   .Select(lc => lc.commande)
                                                   .GroupBy(c => new { c.Uid, c.Rno }, (key, kcs) => new { key.Uid, key.Rno, commandes = kcs })
                                                   .ToListAsync();

            List <AFacturerDUnClient> aFacturerParClient = commandesAFacturerGroupéesParKey
                                                           .Select(kcaf => AFacturerDUnClient(kcaf.Uid, kcaf.Rno, kcaf.commandes))
                                                           .Where(claf => claf.Commandes.Count > 0)
                                                           .ToList();

            long noProchaineFacture = await ProchainFactureNo(site);

            return(new AFacturer {
                AFacturerParClient = aFacturerParClient, Livraisons = livraisonsAFacturer, NoProchaineFacture = noProchaineFacture
            });
        }
        public async Task <Documents> ListeC(AKeyUidRno keySite, AKeyUidRno keyClient)
        {
            bool filtreCommandes(Commande c) => c.Uid == keyClient.Uid && c.Rno == keyClient.Rno && c.Date.HasValue;

            List <Commande> commandes = await _utile.CommandesAvecDétailsLivraisonEtFacture(filtreCommandes, null, null, null).ToListAsync();

            return(await Liste(keySite, commandes));
        }
Example #3
0
        /// <summary>
        /// retourne la commande définie par keyOuVueCommande
        /// </summary>
        /// <param name="keyOuVueCommande"></param>
        /// <returns></returns>
        public async Task <Commande> CommandeDeKeyOuVue(AKeyUidRnoNo keyOuVueCommande)
        {
            bool filtre(Commande c) => c.Uid == keyOuVueCommande.Uid && c.Rno == keyOuVueCommande.Rno && c.No == keyOuVueCommande.No;

            Commande commande = await _utile.CommandesAvecDétailsLivraisonEtFacture(filtre, null, null, null)
                                .FirstOrDefaultAsync();

            return(commande);
        }
Example #4
0
        /// <summary>
        /// Lit la commande définie par vérificateur.KeyCommande et vérifie qu'elle existe. Fixe vérificateur.Commande.
        /// </summary>
        /// <param name="vérificateur"></param>
        /// <returns></returns>
        private async Task CommandeExiste(Vérificateur vérificateur)
        {
            AKeyUidRnoNo          key    = vérificateur.KeyCommande;
            Func <Commande, bool> filtre = (Commande c) => c.Uid == key.Uid && c.Rno == key.Rno && c.No == key.No;
            Commande commande            = await _utile.CommandesAvecDétailsLivraisonEtFacture(filtre, null, null, null).FirstOrDefaultAsync();

            if (commande == null)
            {
                vérificateur.Erreur = RésultatBadRequest("CommandeNExistePas");
                return;
            }
            vérificateur.Commande = commande;
        }