Пример #1
0
 def __init__(self, parent, *args, **kwds):
     CTRL.__init__(self, parent, *args, **kwds)
     track_tarif = Track_tarif()
     filtre_methodes = ("montant_unique", "qf")
     CTRL_Tarification_calcul.Panel.__init__(self, parent, IDactivite=None, IDtarif=None, track_tarif=track_tarif, filtre_methodes=filtre_methodes)
     self.SetMinSize((-1, 220))
     self.MAJ()
Пример #2
0
 def Ajouter(self, event):
     track_tarif = Track_tarif(dictDonnees={"IDactivite":self.track_evenement.IDactivite, "date_debut":self.track_evenement.date, "date_fin":self.track_evenement.date})
     nom_evenement = self.GetParent().ctrl_nom.GetValue()
     from Dlg import DLG_Saisie_tarification
     dlg = DLG_Saisie_tarification.Dialog(self, IDactivite=self.track_evenement.IDactivite, IDtarif=None, nom_tarif=nom_evenement,
                                          choix_pages=["generalites", "conditions", "calcul"], cacher_dates=True, track_tarif=track_tarif)
     dlg.toolbook.GetPage("calcul").SetFiltreTypeTarif("JOURN")
     if dlg.ShowModal() == wx.ID_OK:
         track_tarif = dlg.GetTrackTarif()
         self.donnees.append(track_tarif)
         self.MAJ(track_tarif)
     dlg.Destroy()
Пример #3
0
    def Ajouter(self, event):
        track_tarif = Track_tarif()
        nom_tarif = self.GetGrandParent().GetParent().ctrl_nom.GetValue()
        from Dlg import DLG_Saisie_tarification
        dlg = DLG_Saisie_tarification.Dialog(
            self,
            IDactivite=None,
            IDtarif=None,
            nom_tarif=nom_tarif,
            choix_pages=["generalites", "calcul"],
            track_tarif=track_tarif)
        dlg.toolbook.GetPage("calcul").SetFiltreTypeTarif("PRODUIT")
        dlg.toolbook.GetPage("generalites").MasqueCategories()
        dlg.SetMinSize((700, 450))
        dlg.SetSize((700, 450))

        if dlg.ShowModal() == wx.ID_OK:
            track_tarif = dlg.GetTrackTarif()
            self.donnees.append(track_tarif)
            self.MAJ(track_tarif)
        dlg.Destroy()
    def InitModel(self):
        """ Récupération des données """
        if self.dictInfosLocation["IDproduit"] == None :
            return

        liste_tarifs = []

        DB = GestionDB.DB()

        # Importation du tarif fixe du produit
        req = """SELECT nom, montant
        FROM produits 
        WHERE IDproduit=%d;""" % self.dictInfosLocation["IDproduit"]
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        if len(listeDonnees) > 0 :
            nom_produit, montant_produit = listeDonnees[0]
            if montant_produit != None :
                track = Track_tarif({"IDtarif": None})
                track.label = nom_produit
                track.montant = montant_produit
                liste_tarifs.append(track)

        # Importation des tarifs
        req = """SELECT IDtarif, IDactivite, date_debut, date_fin, methode, type, categories_tarifs, groupes, etiquettes, cotisations, 
        caisses, description, jours_scolaires, jours_vacances, observations, tva, code_compta, 
        IDtype_quotient, label_prestation, IDproduit
        FROM tarifs WHERE IDproduit=%d;""" % self.dictInfosLocation["IDproduit"]
        DB.ExecuterReq(req)
        listeDonneesTarifs = DB.ResultatReq()
        listeIDtarif = []
        for temp in listeDonneesTarifs:
            listeIDtarif.append(temp[0])

        if len(listeIDtarif) == 0:
            condition = "()"
        elif len(listeIDtarif) == 1:
            condition = "(%d)" % listeIDtarif[0]
        else:
            condition = str(tuple(listeIDtarif))

        # Importation des lignes de tarifs
        req = """SELECT %s FROM tarifs_lignes WHERE IDtarif IN %s ORDER BY num_ligne;""" % (", ".join(CHAMPS_TABLE_LIGNES), condition)
        DB.ExecuterReq(req)
        listeDonneesLignes = DB.ResultatReq()
        dictLignes = {}
        for ligne in listeDonneesLignes:
            index = 0
            dictLigne = {}
            for valeur in ligne:
                dictLigne[CHAMPS_TABLE_LIGNES[index]] = valeur
                index += 1
            if dictLignes.has_key(dictLigne["IDtarif"]) == False:
                dictLignes[dictLigne["IDtarif"]] = []
            dictLignes[dictLigne["IDtarif"]].append(dictLigne)

        # Mémorisation des tarifs
        for IDtarif, IDactivite, date_debut, date_fin, methode, type, categories_tarifs, groupes, etiquettes, cotisations, caisses, description, jours_scolaires, jours_vacances, observations, tva, code_compta, IDtype_quotient, label_prestation, IDproduit in listeDonneesTarifs:

            # Récupération des lignes du tarif
            if dictLignes.has_key(IDtarif):
                liste_lignes = dictLignes[IDtarif]
            else:
                liste_lignes = []

            dictTarif = {
                "IDtarif": IDtarif, "IDactivite": IDactivite, "date_debut": date_debut, "date_fin": date_fin, "methode": methode, "type": type, "categories_tarifs": categories_tarifs,
                "groupes": groupes, "etiquettes": etiquettes, "cotisations": cotisations, "caisses": caisses, "description": description,
                "jours_scolaires": jours_scolaires, "jours_vacances": jours_vacances, "observations": observations, "tva": tva,
                "code_compta": code_compta, "IDtype_quotient": IDtype_quotient, "label_prestation": label_prestation, "IDproduit": IDproduit,
                "filtres": [], "lignes": liste_lignes,
            }
            track = Track_tarif(dictTarif)

            # Ajustement du label de la prestation
            if label_prestation == "description_tarif" :
                track.label = description
            else :
                track.label = nom_produit

            # Calcul du montant
            track.montant = 0.0

            # ------------ Recherche du montant du tarif : MONTANT UNIQUE
            if methode == "produit_montant_unique":
                track.montant = liste_lignes[0]["montant_unique"]

            # ------------ Recherche du montant du tarif : MONTANT PROPORTIONNEL A LA QUANTITE
            if methode == "produit_proportionnel_quantite":
                if self.dictInfosLocation.has_key("quantite") :
                    quantite = self.dictInfosLocation["quantite"]
                    track.montant = quantite * liste_lignes[0]["montant_unique"]

            # Mémorisation du tarif
            liste_tarifs.append(track)

        DB.Close()

        # Envoi des données au OL
        self.donnees = liste_tarifs
Пример #5
0
    def __init__(self, parent, IDmodele=None):
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           name="DLG_Saisie_modele_prestation",
                           style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER
                           | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX)
        self.parent = parent
        self.IDmodele = IDmodele
        self.track_tarif = None
        self.listeInitialeIDlignes = []

        if self.IDmodele == None:
            titre = _(u"Saisie d'un modèle de prestation")
        else:
            titre = _(u"Modification d'un modèle de prestation")
        self.SetTitle(titre)
        intro = _(
            u"Vous pouvez saisir ou modifier ici les caractéristiques d'un modèle de prestation. Un modèle permet une saisie rapide de plusieurs prestations aux caractéristiques identiques."
        )
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(
            self,
            titre=titre,
            texte=intro,
            hauteurHtml=30,
            nomImage="Images/32x32/Euro.png")

        # Généralités
        self.staticbox_generalites_staticbox = wx.StaticBox(
            self, -1, _(u"Généralites"))
        self.label_categorie = wx.StaticText(self, -1, _(u"Catégorie :"))
        self.ctrl_categorie = Choix_categorie(self)
        self.label_label = wx.StaticText(self, -1, _(u"Intitulé :"))
        self.ctrl_label = wx.TextCtrl(self, -1, u"")
        self.ctrl_label.SetMinSize((200, -1))
        self.label_type = wx.StaticText(self, -1, _(u"Type :"))
        self.radio_type_familiale = wx.RadioButton(self,
                                                   -1,
                                                   _(u"Prestation familiale"),
                                                   style=wx.RB_GROUP)
        self.radio_type_individuelle = wx.RadioButton(
            self, -1, _(u"Prestation individuelle"))

        # Options
        self.staticbox_options_staticbox = wx.StaticBox(
            self, -1, _(u"Options"))
        self.label_activite = wx.StaticText(self, -1, _(u"Activité :"))
        self.ctrl_activite = Choix_activite(self)
        self.label_categorie_tarif = wx.StaticText(self, -1,
                                                   _(u"Catégorie :"))
        self.ctrl_categorie_tarif = Choix_categorie_tarif(self)
        self.label_tarif = wx.StaticText(self, -1, _(u"Tarif :"))
        self.ctrl_tarif = Choix_tarif(self)

        # TVA
        self.label_tva = wx.StaticText(self, -1, _(u"Taux TVA (%) :"))
        self.ctrl_tva = FS.FloatSpin(self,
                                     -1,
                                     min_val=0,
                                     max_val=100,
                                     increment=0.1,
                                     agwStyle=FS.FS_RIGHT)
        self.ctrl_tva.SetFormat("%f")
        self.ctrl_tva.SetDigits(2)

        # Code comptable
        self.label_code_comptable = wx.StaticText(self, -1,
                                                  _(u"Code compta :"))
        self.ctrl_code_comptable = wx.TextCtrl(self, -1, u"")
        self.ctrl_code_comptable.SetMinSize((80, -1))

        # Tarification
        self.staticbox_tarification_staticbox = wx.StaticBox(
            self, -1, _(u"Tarification"))
        self.track_tarif = Track_tarif(
            dictDonnees={"lignes": self.Importation_lignes()})
        filtre_methodes = ("montant_unique", "qf")
        self.ctrl_tarification = CTRL_Tarification_calcul.Panel(
            self,
            IDactivite=None,
            IDtarif=None,
            track_tarif=self.track_tarif,
            filtre_methodes=filtre_methodes)

        # Commandes
        self.bouton_aide = CTRL_Bouton_image.CTRL(
            self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
        self.bouton_ok = CTRL_Bouton_image.CTRL(
            self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png")
        self.bouton_annuler = CTRL_Bouton_image.CTRL(
            self,
            id=wx.ID_CANCEL,
            texte=_(u"Annuler"),
            cheminImage="Images/32x32/Annuler.png")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_CHOICE, self.OnChoixCategorie, self.ctrl_categorie)
        self.Bind(wx.EVT_CHOICE, self.OnChoixActivite, self.ctrl_activite)
        self.Bind(wx.EVT_CHOICE, self.OnChoixCategorieTarif,
                  self.ctrl_categorie_tarif)
        self.Bind(wx.EVT_CHOICE, self.OnChoixTarif, self.ctrl_tarif)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)

        self.ctrl_categorie_tarif.Enable(False)
        self.ctrl_tarif.Enable(False)

        # Remplissage des contrôles
        self.listeActivites = self.Importation_activites()
        self.ctrl_activite.SetListeDonnees(self.listeActivites)

        self.listeCategoriesTarifs = self.Importation_categories_tarifs(
            IDactivite=0)
        self.ctrl_categorie_tarif.SetListeDonnees(self.listeCategoriesTarifs)

        self.listeTarifs = self.Importation_tarifs(IDcategorie_tarif=0)
        self.ctrl_tarif.SetListeDonnees(self.listeTarifs)

        # Importation lors d'une modification
        if self.IDmodele != None:
            self.Importation()
Пример #6
0
    def InitModel(self):
        """ Récupération des données """
        if self.dictInfosLocation["IDproduit"] == None:
            return

        liste_tarifs = []

        DB = GestionDB.DB()

        # Importation du tarif fixe du produit
        req = """SELECT nom, montant
        FROM produits 
        WHERE IDproduit=%d;""" % self.dictInfosLocation["IDproduit"]
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        if len(listeDonnees) > 0:
            nom_produit, montant_produit = listeDonnees[0]
            if montant_produit != None:
                track = Track_tarif({"IDtarif": None})
                track.label = nom_produit
                track.montant = montant_produit
                liste_tarifs.append(track)

        # Importation des tarifs
        req = """SELECT IDtarif, IDactivite, date_debut, date_fin, methode, type, categories_tarifs, groupes, etiquettes, cotisations, 
        caisses, description, jours_scolaires, jours_vacances, observations, tva, code_compta, 
        IDtype_quotient, label_prestation, IDproduit
        FROM tarifs WHERE IDproduit=%d;""" % self.dictInfosLocation["IDproduit"]
        DB.ExecuterReq(req)
        listeDonneesTarifs = DB.ResultatReq()
        listeIDtarif = []
        for temp in listeDonneesTarifs:
            listeIDtarif.append(temp[0])

        if len(listeIDtarif) == 0:
            condition = "()"
        elif len(listeIDtarif) == 1:
            condition = "(%d)" % listeIDtarif[0]
        else:
            condition = str(tuple(listeIDtarif))

        # Importation des lignes de tarifs
        req = """SELECT %s FROM tarifs_lignes WHERE IDtarif IN %s ORDER BY num_ligne;""" % (
            ", ".join(CHAMPS_TABLE_LIGNES), condition)
        DB.ExecuterReq(req)
        listeDonneesLignes = DB.ResultatReq()
        dictLignes = {}
        for ligne in listeDonneesLignes:
            index = 0
            dictLigne = {}
            for valeur in ligne:
                dictLigne[CHAMPS_TABLE_LIGNES[index]] = valeur
                index += 1
            if dictLignes.has_key(dictLigne["IDtarif"]) == False:
                dictLignes[dictLigne["IDtarif"]] = []
            dictLignes[dictLigne["IDtarif"]].append(dictLigne)

        # Mémorisation des tarifs
        for IDtarif, IDactivite, date_debut, date_fin, methode, type, categories_tarifs, groupes, etiquettes, cotisations, caisses, description, jours_scolaires, jours_vacances, observations, tva, code_compta, IDtype_quotient, label_prestation, IDproduit in listeDonneesTarifs:

            # Récupération des lignes du tarif
            if dictLignes.has_key(IDtarif):
                liste_lignes = dictLignes[IDtarif]
            else:
                liste_lignes = []

            dictTarif = {
                "IDtarif": IDtarif,
                "IDactivite": IDactivite,
                "date_debut": date_debut,
                "date_fin": date_fin,
                "methode": methode,
                "type": type,
                "categories_tarifs": categories_tarifs,
                "groupes": groupes,
                "etiquettes": etiquettes,
                "cotisations": cotisations,
                "caisses": caisses,
                "description": description,
                "jours_scolaires": jours_scolaires,
                "jours_vacances": jours_vacances,
                "observations": observations,
                "tva": tva,
                "code_compta": code_compta,
                "IDtype_quotient": IDtype_quotient,
                "label_prestation": label_prestation,
                "IDproduit": IDproduit,
                "filtres": [],
                "lignes": liste_lignes,
            }
            track = Track_tarif(dictTarif)

            # Ajustement du label de la prestation
            if label_prestation == "description_tarif":
                track.label = description
            else:
                track.label = nom_produit

            # Calcul du montant
            track.montant = 0.0

            # ------------ Recherche du montant du tarif : MONTANT UNIQUE
            if methode == "produit_montant_unique":
                track.montant = liste_lignes[0]["montant_unique"]

            # ------------ Recherche du montant du tarif : MONTANT PROPORTIONNEL A LA QUANTITE
            if methode == "produit_proportionnel_quantite":
                if self.dictInfosLocation.has_key("quantite"):
                    quantite = self.dictInfosLocation["quantite"]
                    track.montant = quantite * liste_lignes[0]["montant_unique"]

            # Mémorisation du tarif
            liste_tarifs.append(track)

        DB.Close()

        # Envoi des données au OL
        self.donnees = liste_tarifs
    def Suite(self):
        DB = GestionDB.DB()
        self.parent.Sauvegarde_standard(DB)
        IDactivite = self.parent.dict_valeurs["IDactivite"]

        # Unités de consommation
        listeIDunite = []
        listeDonnees = [("IDactivite", IDactivite), ("nom", _(u"Sortie")),
                        ("abrege", _(u"SORTIE")), ("type", "Evenement"),
                        ("date_debut", "1977-01-01"),
                        ("date_fin", "2999-01-01"), ("repas", 0), ("ordre", 1)]
        IDunite = DB.ReqInsert("unites", listeDonnees)
        listeIDunite.append(IDunite)

        # Unité de remplissage
        listeIDuniteRemplissage = []
        listeDonnees = [
            ("IDactivite", IDactivite),
            ("nom", _(u"Sortie")),
            ("abrege", _(u"SORTIE")),
            ("seuil_alerte", 5),
            ("date_debut", "1977-01-01"),
            ("date_fin", "2999-01-01"),
            ("afficher_page_accueil", 1),
            ("afficher_grille_conso", 1),
            ("ordre", 1),
        ]
        IDunite_remplissage = DB.ReqInsert("unites_remplissage", listeDonnees)
        listeIDuniteRemplissage.append(IDunite_remplissage)

        listeDonnees = [
            ("IDunite_remplissage", IDunite_remplissage),
            ("IDunite", IDunite),
        ]
        DB.ReqInsert("unites_remplissage_unites", listeDonnees)

        # Nom de tarif
        listeDonnees = [("IDactivite", IDactivite), ("nom", _(u"Sortie"))]
        IDnom_tarif = DB.ReqInsert("noms_tarifs", listeDonnees)

        # Catégories de tarifs
        listeCategoriesEtTarifs = []

        # Catégorie unique
        listeDonnees = [("IDactivite", IDactivite),
                        ("nom", _(u"Catégorie unique"))]
        IDcategorie_tarif = DB.ReqInsert("categories_tarifs", listeDonnees)
        track_tarif = Track_tarif()
        listeCategoriesEtTarifs.append((IDcategorie_tarif, track_tarif))

        # Tarifs
        listeTarifs = []
        for IDcategorie_tarif, track_tarif in listeCategoriesEtTarifs:
            track_tarif.MAJ({
                "IDactivite":
                IDactivite,
                "IDnom_tarif":
                IDnom_tarif,
                "type":
                "JOURN",
                "date_debut":
                "%d-01-01" % datetime.date.today().year,
                "categories_tarifs":
                str(IDcategorie_tarif),
                "methode":
                "montant_evenement",
                "etats":
                "reservation;present;absenti",
                "label_prestation":
                "nom_tarif",
                "combi_tarifs": [
                    {
                        "type": "JOURN",
                        "unites": [
                            IDunite,
                        ]
                    },
                ],
                "lignes": [
                    Track_ligne({
                        "code": "montant_evenement",
                        "num_ligne": 0,
                        "tranche": "1"
                    })
                ],
            })
            listeTarifs.append(track_tarif)

        self.parent.Sauvegarde_tarifs(DB, listeTarifs)

        DB.Close()

        # Fermeture
        self.parent.Quitter()
        return False
Пример #8
0
    def Importation(self):
        """ Importation des données """
        DB = GestionDB.DB()
        req = """SELECT nom, observations, image, IDcategorie, quantite, montant
        FROM produits WHERE IDproduit=%d;""" % self.IDproduit
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        if len(listeDonnees) == 0:
            DB.Close()
            return
        nom, observations, image, IDcategorie, quantite, montant = listeDonnees[
            0]

        # Généralités
        self.ctrl_nom.SetValue(nom)
        self.ctrl_categorie.SetID(IDcategorie)
        self.ctrl_observations.SetValue(observations)

        # Importation des tarifs
        liste_tarifs = []

        req = """SELECT IDtarif, IDactivite, date_debut, date_fin, methode, type, categories_tarifs, groupes, etiquettes, cotisations, 
        caisses, description, jours_scolaires, jours_vacances, observations, tva, code_compta, 
        IDtype_quotient, label_prestation, IDproduit
        FROM tarifs WHERE IDproduit=%d;""" % self.IDproduit
        DB.ExecuterReq(req)
        listeDonneesTarifs = DB.ResultatReq()
        listeIDtarif = []
        for temp in listeDonneesTarifs:
            listeIDtarif.append(temp[0])
            self.dict_donnees_initiales["tarifs"].append(temp[0])

        # Importation des filtres de questionnaire
        if len(listeIDtarif) == 0:
            condition = "()"
        elif len(listeIDtarif) == 1:
            condition = "(%d)" % listeIDtarif[0]
        else:
            condition = str(tuple(listeIDtarif))

        req = """SELECT IDtarif, IDfiltre, IDquestion, categorie, choix, criteres FROM questionnaire_filtres WHERE IDtarif IN %s;""" % condition
        DB.ExecuterReq(req)
        listeDonneesFiltres = DB.ResultatReq()
        dictFiltres = {}
        for IDtarif, IDfiltre, IDquestion, categorie, choix, criteres in listeDonneesFiltres:
            if (IDtarif in dictFiltres) == False:
                dictFiltres[IDtarif] = []
            dictTemp = {
                "IDfiltre": IDfiltre,
                "IDquestion": IDquestion,
                "categorie": categorie,
                "choix": choix,
                "criteres": criteres,
                "IDtarif": IDtarif
            }
            dictFiltres[IDtarif].append(dictTemp)
            self.dict_donnees_initiales["questionnaire_filtres"].append(
                IDfiltre)

        # Importation des lignes de tarifs
        req = """SELECT %s FROM tarifs_lignes WHERE IDtarif IN %s ORDER BY num_ligne;""" % (
            ", ".join(CHAMPS_TABLE_LIGNES), condition)
        DB.ExecuterReq(req)
        listeDonneesLignes = DB.ResultatReq()
        dictLignes = {}
        for ligne in listeDonneesLignes:
            index = 0
            dictLigne = {}
            for valeur in ligne:
                dictLigne[CHAMPS_TABLE_LIGNES[index]] = valeur
                index += 1
            if (dictLigne["IDtarif"] in dictLignes) == False:
                dictLignes[dictLigne["IDtarif"]] = []
            dictLignes[dictLigne["IDtarif"]].append(dictLigne)
            self.dict_donnees_initiales["tarifs_lignes"].append(
                dictLigne["IDligne"])

        # Mémorisation des tarifs
        for IDtarif, IDactivite, date_debut, date_fin, methode, type, categories_tarifs, groupes, etiquettes, cotisations, caisses, description, jours_scolaires, jours_vacances, observations, tva, code_compta, IDtype_quotient, label_prestation, IDproduit in listeDonneesTarifs:

            # Récupération des filtres du tarif
            if IDtarif in dictFiltres:
                liste_filtres = dictFiltres[IDtarif]
            else:
                liste_filtres = []

            # Récupération des lignes du tarif
            if IDtarif in dictLignes:
                liste_lignes = dictLignes[IDtarif]
            else:
                liste_lignes = []

            dictTarif = {
                "IDtarif": IDtarif,
                "IDactivite": IDactivite,
                "date_debut": date_debut,
                "date_fin": date_fin,
                "methode": methode,
                "type": type,
                "categories_tarifs": categories_tarifs,
                "groupes": groupes,
                "etiquettes": etiquettes,
                "cotisations": cotisations,
                "caisses": caisses,
                "description": description,
                "jours_scolaires": jours_scolaires,
                "jours_vacances": jours_vacances,
                "observations": observations,
                "tva": tva,
                "code_compta": code_compta,
                "IDtype_quotient": IDtype_quotient,
                "label_prestation": label_prestation,
                "IDproduit": IDproduit,
                "filtres": liste_filtres,
                "lignes": liste_lignes,
            }

            liste_tarifs.append(Track_tarif(dictTarif))

        DB.Close()

        # Paramètres
        dictDonnees = {
            "quantite": quantite,
            "montant": montant,
            "tarifs": liste_tarifs
        }
        self.ctrl_parametres.SetDonnees(dictDonnees)

        # Logo
        if image != None:
            self.ctrl_logo.ChargeFromBuffer(image)