[Ventes] Les câbleurs peuvent vendre + utilisation des bonnes interfaces dialog.

* Les câbleurs ne peuvent pas toucher au solde Crans, ni vendre de reliure, mais le
 reste ils peuvent faire ;
 * Les checkbox c'est bien quand on a plus d'un choix ;
 * Stuff.
This commit is contained in:
Pierre-Elliott Bécue 2013-12-10 09:41:48 +01:00
parent 60bae0afe6
commit 4e33352623
2 changed files with 32 additions and 44 deletions

View file

@ -3,7 +3,7 @@
# Les clef sont un code article # Les clef sont un code article
items = { items = {
'CABLE' : {'designation': u'Cable Ethernet 5m', 'pu': 3}, 'CABLE' : {'designation': u'Cable Ethernet 5m', 'pu': 3, 'imprimeur': False},
'ADAPTATEUR' : {'designation': u'Adaptateur Ethernet/USB', 'pu': 17}, 'ADAPTATEUR' : {'designation': u'Adaptateur Ethernet/USB', 'pu': 17, 'imprimeur': False},
'RELIURE': {'designation': u'Reliure plastique', 'pu': 0.12}, 'RELIURE': {'designation': u'Reliure plastique', 'pu': 0.12, 'imprimeur': False},
} }

View file

@ -108,7 +108,7 @@ def set_bases(adher):
no, res = dialog(arg) no, res = dialog(arg)
if no: if no:
return 1 return 1
err += _set_chbre(adher, result[3]) err += _set_chbre(adher, result[3])
# Des erreurs ? # Des erreurs ?
@ -971,7 +971,7 @@ def set_solde(clas):
def set_vente(proprio): def set_vente(proprio):
u""" u"""
Vent un objet à l'adherent : génère la facture associée. Vend un objet à l'adherent : génère la facture associée.
""" """
from config.factures import items from config.factures import items
@ -980,7 +980,9 @@ def set_vente(proprio):
checklist = [] checklist = []
texte = [] texte = []
for key,value in items.items(): for key, value in items.iteritems():
if value['imprimeur'] and not isimprimeur:
continue
checklist.append(u'"%s" "%s (%s€)" "%s"' % (key, value['designation'], value['pu'], on_off(False))) checklist.append(u'"%s" "%s (%s€)" "%s"' % (key, value['designation'], value['pu'], on_off(False)))
if not checklist: if not checklist:
@ -1029,44 +1031,35 @@ def set_vente(proprio):
def choose_paiement(f): def choose_paiement(f):
checklist = [] menu = []
texte = [] texte = []
checklist.append(u'"1" "Espèce" "%s"' % (on_off(False))) menu.append(u'"Spc" "Espèces" ')
checklist.append(u'"2" "Chèque" "%s"' % (on_off(False))) menu.append(u'"Chq" "Chèque" ')
checklist.append(u'"3" "Solde Crans (actuel : %s€)" "%s"' % (proprio.solde(), on_off(False))) if isimprimeur:
menu.append(u'"Sol" "Solde Crans (actuel : %s€)" ' % (proprio.solde()))
# Il y a qqch de modifiable, on construit la checklist # Il y a qqch de modifiable, on construit la checklist
arg = u'--title "Vente de consomables à %s" ' % proprio.Nom() arg = u'--title "Vente de consomables à %s" ' % proprio.Nom()
arg += u'--separate-output ' arg += u'--menu "Mode de paiement : " 0 0 0 '
arg += u'--checklist "" 0 0 0 ' arg += u''.join(menu)
arg += u' '.join(checklist)
while True: annul, result = dialog(arg)
annul, result = dialog(arg) if annul: return 1
if annul: return 1 #print result
if len(result) != 1 or not result[0]:
arg_err = u'--title "Opération impossible" '
arg_err += u'--msgbox "Merci de choisir un seul mode de paiement\n\n\n" 0 0'
dialog(arg_err)
else:
break
print result
# Ajout du commentaire # Ajout du commentaire
arg = u'--title "Crédit / débit du compte de %s" ' % proprio.Nom() arg = u'--title "Crédit / débit du compte de %s" ' % proprio.Nom()
arg += u'--inputbox "Commentaire à insérer ?" 0 0' arg += u'--inputbox "Commentaire à insérer ?" 0 0'
if "1\n" in result: if result[0] == "Spc":
f.modePaiement('liquide') f.modePaiement('liquide')
paiement=u"Espèce" paiement=u"Espèce"
annul, comment = dialog(arg) annul, comment = dialog(arg)
elif "2\n" in result: elif result[0] == "Chq":
f.modePaiement('cheque') f.modePaiement('cheque')
paiement=u"Chèque" paiement=u"Chèque"
annul, comment = dialog(arg) annul, comment = dialog(arg)
elif "3\n" in result: elif result[0] == "Sol" and isimprimeur:
f.modePaiement('solde') f.modePaiement('solde')
paiement=u"Solde Crans" paiement=u"Solde Crans"
comment = None comment = None
@ -1075,19 +1068,14 @@ def set_vente(proprio):
comment = comment[0] comment = comment[0]
else: else:
comment = None comment = None
return (f,paiement,comment)
def comfirm_and_pay((f,paiement,comment)):
arg = u'--title "Validation du paiement" '
arg += u'--separate-output '
arg += u'--checklist "Le paiement de %s€ a-t-il bien été reçu en %s ?\n" 0 0 0 ' % (f.total(), paiement)
arg += ' '.join([u'"P" "Paiement de %s€ reçu" "%s"' % (f.total(), on_off(False))])
annul, result = dialog(arg)
if annul: return 1
if not "P\n" in result: return (f,paiement,comment)
def confirm_and_pay((f,paiement,comment)):
arg = u'--title "Validation du paiement" '
arg += u'--yesno "Le paiement de %s€ a-t-il bien été reçu (mode : %s) ?\n" 0 0 ' % (f.total(), paiement)
no, result = dialog(arg)
if no:
arg = u'--title "Annulation de la vente" ' arg = u'--title "Annulation de la vente" '
arg += u'--msgbox "Le paiement n\'ayant pas été reçue\nla vente est annulée\n" 0 0' arg += u'--msgbox "Le paiement n\'ayant pas été reçue\nla vente est annulée\n" 0 0'
dialog(arg) dialog(arg)
@ -1106,14 +1094,14 @@ def set_vente(proprio):
arg += u'--msgbox "%s\n" 0 0' % error arg += u'--msgbox "%s\n" 0 0' % error
dialog(arg) dialog(arg)
return 1 return 1
f = choose_items() f = choose_items()
if isinstance(f, int): if isinstance(f, int):
return f return f
ret = choose_paiement(f) ret = choose_paiement(f)
if isinstance(ret, int): if isinstance(ret, int):
return ret return ret
return comfirm_and_pay(ret) return confirm_and_pay(ret)
def confirm(clas): def confirm(clas):
@ -1863,7 +1851,7 @@ def modif_adher(adher):
arg += u'"Blackliste" "Modifier la blackliste de cet adhérent" ' arg += u'"Blackliste" "Modifier la blackliste de cet adhérent" '
if isimprimeur: if isimprimeur:
arg += u'"Solde" "Effectuer un débit/crédit pour cet adhérent" ' arg += u'"Solde" "Effectuer un débit/crédit pour cet adhérent" '
arg += u'"Vente" "Vendre un cable ou adaptateur ethernet ou autre" ' arg += u'"Vente" "Vendre un cable ou adaptateur ethernet ou autre" '
annul, res = dialog(arg) annul, res = dialog(arg)
@ -2132,7 +2120,7 @@ def select(clas, quoi, mde=''):
arg += u'--msgbox "Il faut au moins une condition.\n\n\n" 0 0' arg += u'--msgbox "Il faut au moins une condition.\n\n\n" 0 0'
dialog(arg) dialog(arg)
continue continue
### Recherche ### Recherche
try: try:
if mde == 'ro': if mde == 'ro':