// annulation d'un article  ==> qte est negatif
        internal void AjouterLigneDeVente(Vente venteEnCours, string cpu, int qte)
        {
            // Je ne peux pas ajouter une ligne de vente si il existe déjà un paiement
            if (venteEnCours.Paiements.Count > 0) throw new ExisteDejaUnPaiement("Impossible d'ajouter une ligne sur une vente tout ou partie réglée");

            // Recherche de l'article dans la vente : pas prévu initialement, mais me permet d'interdire l'annulation de generics par le caissier
            LigneDeVente ldv= venteEnCours.LigneDeVentes.FirstOrDefault(l => l.LeProduitReference.Cpu == cpu);
            if ((ldv!=null && ldv.LeProduitReference.Generic) | ldv ==null)
                throw new ArticleGenericException("Appelez le manager pour annuler un généric!");

            // Somme des qtes pour cet article
            var totalQte = venteEnCours.LigneDeVentes.Where(l => l.LeProduitReference.Cpu == cpu).Sum(m => m.Qte);
            if (totalQte < Math.Abs(qte)) throw new QteTotaleInfQuantiteAnnulee("Quantité totale insuffisante");

            //création nouvelle ligne : recherche si existe déjà une ligne pour ce cpu en quantité négative
            ldv = venteEnCours.LigneDeVentes.FirstOrDefault(l => l.LeProduitReference.Cpu == cpu && !l.LeProduitReference.Generic && l.Qte < 0);
            if (ldv == null)
            {
                // recherche de la premiere ligne pour ce cpu pour récup objet article
                var ldvArt = venteEnCours.LigneDeVentes.First(l => l.LeProduitReference.Cpu == cpu);
                //création nouvelle ligne
                ldv = ldvMgr.CreerLigneDeVente(ldvArt.LeProduitReference, qte);
                venteEnCours.LigneDeVentes.Add(ldv);

            }
            else
            {
                // Mise à jour ligne
                ldvMgr.MettreAJourLigneDeVente(ldv, qte);
            }
        }
        // saisie d'un article non généric
        internal void AjouterLigneDeVente(Vente venteEnCours, Produit article, int qte)
        {
            // Je ne peux pas ajouter une ligne de vente si il existe déjà un paiement
            if (venteEnCours.Paiements.Count > 0) throw new ExisteDejaUnPaiement("Impossible d'ajouter une ligne sur une vente tout ou partie réglée");

            // Recherch=e existence ligne de vente pour cet article avec qte >0
            var ldv = venteEnCours.LigneDeVentes.FirstOrDefault(l => l.LeProduitReference == article && l.Qte > 0);
            if (ldv == null)
            {
                //création nouvelle ligne
                ldv = ldvMgr.CreerLigneDeVente(article, qte);
                venteEnCours.LigneDeVentes.Add(ldv);

            }
            else
            {
                // Mise à jour ligne
                ldvMgr.MettreAJourLigneDeVente(ldv, qte);
            }
        }
 public void CalculerRemise(Vente venteEncours)
 {
     if (venteEncours.TotalTtc > aPartirDe)
        venteEncours.Remise = remiseFixe;
        else venteEncours.Remise = 0;
 }
 public void CalculerRemise(Vente venteEncours)
 {
     venteEncours.Remise = venteEncours.TotalTtc * pourcentage;
 }
 // Calcul le total A regler : mise en place Strategy
 public void CalculerARegler(Vente venteEnCours,TypeRemise tr)
 {
     ITarificateur tarificator = FabriqueStrategy.Instance.CreerTarificateur(tr);
     tarificator.CalculerRemise(venteEnCours);
 }
        internal void CreerPaiement(Vente venteEnCours, ModeReg modeReglement, decimal montantReglement )
        {
            // Calcul reste à regler
            decimal resteARegler = venteEnCours.ResteARegler;
            if (resteARegler == 0) throw new PlusRienAReglerException("Impossible : La vente est terminée !");

            // Création du bon PaiementManager à l'aide d'une fabrique Grasp
            var fabPMgr = new FabriquePaiementMgr();
            var pmgr = fabPMgr.GetPaiementMgr(modeReglement);

            // création du paiement
            Paiement p= pmgr.CreerPaiement(montantReglement, resteARegler);
            // ajout dans liste paiement
            venteEnCours.Paiements.Add(p);

            // Persiste en base
            if (venteEnCours.ResteARegler == 0)
            {
                venteEnCours.DateVente = DateTime.Now;
                vDao.Insert(venteEnCours);

            }
        }
 internal Vente CreerNouvelleVente(List<Famille> lstFam )
 {
     Vente v = new Vente();
     return v;
 }
 internal Vente ReprendreVenteEnAttente(out bool existVea)
 {
     // s'il n'existe pas de vente en attente
     if (LaCaisse.VenteEnAttente == null) throw new VenteException("Il n'existe pas de vente en attente !");
     // modif du type de retour et du parametre de la méthode pour info caissier
     // retourne la vente pour affichage total et booleen existence d'une vente en attente
     if (LaCaisse.VenteEnCours.LigneDeVentes.Count != 0)
     {
         // sauvegarde de la vente en cours
         Vente v = new Vente(LaCaisse.VenteEnCours);
         // la vente en attente devient vente en cours
         LaCaisse.VenteEnCours = LaCaisse.VenteEnAttente;
         // la vente en cours sauvegardée devient vente en attente
         LaCaisse.VenteEnAttente = v;
         existVea = true;
     }
     else
     {
         // la vente en attente devient vente en cours
         LaCaisse.VenteEnCours = LaCaisse.VenteEnAttente;
         // il n'y a plus de vente en attente
         LaCaisse.VenteEnAttente = null;
         existVea = false;
     }
     return LaCaisse.VenteEnCours;
 }
 public void CalculerRemise(Vente venteEncours)
 {
     venteEncours.Remise = 0;
 }
Example #10
0
 public Vente(Vente venteEnCours)
 {
     this.DateVente = venteEnCours.DateVente;
     this.LigneDeVentes = venteEnCours.LigneDeVentes;
     this.Paiements = venteEnCours.Paiements;
 }