Beispiel #1
0
def treat_product_new(request, category):
    name = request.POST.get('name', '').strip()
    prize = request.POST.get('prize', '').strip()
    if is_valid_product(request, name, prize):
        try:
            product = Produit(nom=name, prix=prize)
            product.set_category(category)
            product.save()
        except Exception as ex:
            messages.add_message(request,
                                 messages.ERROR,
                                 "Les modifications n'ont pu être enregistrées. ('{}')".format(ex))
        else:
            return HttpResponseRedirect('/carte/categories/%s/' % category.id)
Beispiel #2
0
def categories_send(request):
    '''
    :param HttpRequest request:
    :return rtype: HttpResponse
    '''
    result = Produit().get_list_with_all_products()
    subject = _("Carte")
    mail = ""
    for line in result:
        mail += "%s\n" % line
    if request.user.email:
        try:
            send_mail(subject,
                      mail,
                      settings.DEFAULT_FROM_EMAIL, [request.user.email],
                      fail_silently=False)
        except:
            messages.add_message(request, messages.ERROR,
                                 _("Message could not be sent"))
        else:
            messages.add_message(
                request, messages.SUCCESS,
                _("Message was sent to %s") % request.user.email)
    else:
        messages.add_message(request, messages.ERROR,
                             _("You have no email address"))
    return redirect('categories')
Beispiel #3
0
def products_new(request, cat_id):
    data = get_user(request)
    cat = get_object_or_404(Categorie, pk=cat_id)
    name = request.POST.get('name', '').strip()
    billname = request.POST.get('billname', '').strip()
    prize = request.POST.get('prize', '').strip()
    if name:
        if billname:
            if prize:
                product = Produit()
                product.categorie = cat
                product.nom = name
                product.nom_facture = billname
                product.prix = prize
                try:
                    product.save()
                    logging.info("[%s] new product [%s]" % (data['user'].username, name))
                except:
                    logging.warning("[%s] new product failed: [%s]" % (data['user'].username, name))
                    messages.add_message(request, messages.ERROR, "Le nouveau produit n'a pu être créé.")
            else:
                messages.add_message(request, messages.ERROR, "Vous devez définir un prix pour le nouveau produit.")
        else:
            messages.add_message(request, messages.ERROR, "Vous devez choisir un nom qui s'affichera sur la facture pour le nouveau produit.")
    else:
        messages.add_message(request, messages.ERROR, "Vous devez choisir un nom pour le nouveau produit.")
    return HttpResponseRedirect('/carte/products/cat/%s/' % cat_id)
Beispiel #4
0
def products_new(request, cat_id):
    context = {'menu_manager': True, }
    context['category'] = get_object_or_404(Categorie, pk=cat_id)
    if request.method == 'POST':
        name = request.POST.get('name', '').strip()
        prize = request.POST.get('prize', '').strip()
        if is_valid_product(request, name, prize):
            try:
                product = Produit(nom=name, prix=prize)
                product.set_category(context['category'])
                product.save()
            except Exception as ex:
                messages.add_message(request, messages.ERROR,
                                     _("Changes could not be saved"))
                logger.warning(_("Changes could not be saved")+": "+ex)
            else:
                return redirect('categories_view', context['category'].id)
    return render(request, 'base/carte/product_new.html', context)
Beispiel #5
0
def products_new(request, cat_id):
    context = {'menu_manager': True, }
    context['category'] = get_object_or_404(Categorie, pk=cat_id)
    if request.method == 'POST':
        name = request.POST.get('name', '').strip()
        prize = request.POST.get('prize', '').strip()
        if is_valid_product(request, name, prize):
            try:
                product = Produit(nom=name, prix=prize)
                product.set_category(context['category'])
                product.save()
            except Exception as ex:
                messages.add_message(request,
                                     messages.ERROR,
                                     "Les modifications n'ont pu être "
                                     "enregistrées. ('{}')".format(ex))
            else:
                return redirect('categories_view', context['category'].id)
    return render(request, 'base/carte/product_new.html', context)
Beispiel #6
0
def products_new(request, category_id):
    '''
    TODO
    :param HttpRequest request:
    :param category_id:
    :type category_id:
    '''
    context = {
        'menu_manager': True,
    }
    context['category'] = get_object_or_404(Categorie, pk=category_id)
    if request.method == 'POST':
        name = request.POST.get('name', '').strip()
        prize = request.POST.get('prize', '').strip()
        if is_valid_product(request, name, prize):
            try:
                product = Produit(nom=name, prix=prize)
                product.set_category(context['category'])
                product.save()
            except Exception as ex:
                messages.add_message(request, messages.ERROR,
                                     _("Changes could not be saved"))
                LOGGER.warning(_("Changes could not be saved") + ": " + ex)
            else:
                return redirect('categories_view', context['category'].id)
    return render(request, 'base/carte/product_new.html', context)
Beispiel #7
0
def categories_print(request):
    result = Produit().get_list_with_all_products()
    if result:
        printers = Printer.objects.filter(manager=True)
        if printers:
            printer = printers[0]
            if printer.print_list(result, "carte_complete"):
                messages.add_message(
                    request, messages.SUCCESS,
                    _("Printing was sent to %s") % printer.name)
            else:
                messages.add_message(
                    request, messages.ERROR,
                    _("Printing has failed on %s") % printer.name)
        else:
            messages.add_message(request, messages.ERROR,
                                 _("No printers 'manager' available"))
    else:
        messages.add_message(request, messages.ERROR, _("No product"))
    return redirect('categories')
Beispiel #8
0
def products_new(request, cat_id):
    data = get_user(request)
    cat = get_object_or_404(Categorie, pk=cat_id)
    name = request.POST.get('name', '').strip()
    billname = request.POST.get('billname', '').strip()
    prize = request.POST.get('prize', '').strip()
    if name:
        if billname:
            if prize:
                product = Produit()
                product.categorie = cat
                product.nom = name
                product.nom_facture = billname
                product.prix = prize
                try:
                    product.save()
                    logging.info("[%s] new product [%s]" %
                                 (data['user'].username, name))
                except:
                    logging.warning("[%s] new product failed: [%s]" %
                                    (data['user'].username, name))
                    messages.add_message(
                        request, messages.ERROR,
                        "Le nouveau produit n'a pu être créé.")
            else:
                messages.add_message(
                    request, messages.ERROR,
                    "Vous devez définir un prix pour le nouveau produit.")
        else:
            messages.add_message(
                request, messages.ERROR,
                "Vous devez choisir un nom qui s'affichera sur la facture pour le nouveau produit."
            )
    else:
        messages.add_message(
            request, messages.ERROR,
            "Vous devez choisir un nom pour le nouveau produit.")
    return HttpResponseRedirect('/carte/products/cat/%s/' % cat_id)
Beispiel #9
0
def products_change(request, product_id):
    data = get_user(request)
    name = request.POST.get('name', '').strip()
    billname = request.POST.get('billname', '').strip()
    prize = request.POST.get('prize', '').strip()
    product = get_object_or_404(Produit, pk=product_id)
    if prize != str(product.prix):
        # new prize, so we have to create a new product to keep statistics
        # and historics
        logging.info("[%s] new prize for [%s]: [%s] > [%s]" % (data['user'].username, product.nom, product.prix, prize))
        old = product
        product = Produit()
        product.actif = old.actif
        old.actif = False
        old.save()
        product.prix = prize
        product.nom = old.nom
        product.nom_facture = old.nom_facture
        product.choix_cuisson = old.choix_cuisson
        product.choix_accompagnement = old.choix_accompagnement
        product.choix_sauce = old.choix_sauce
        product.categorie = old.categorie
        try:
            product.save()
            for c in old.categories_ok.distinct():
                product.categories_ok.add(c)
            for p in old.produits_ok.distinct():
                product.produits_ok.add(p)
            messages.add_message(request, messages.INFO,
                    "Le prix d'un produit ne peut être modifié, en conséquence un nouveau produit a été créé et l'ancien a été désactivé.")
        except:
            messages.add_message(request, messages.ERROR, "Les modifications n'ont pu être enregistrées.")
            logging.warning("[%s] save failed for product [%s]" % (data['user'].username, product.nom))
            return HttpResponseRedirect('/carte/products/cat/%s/' % product.categorie.id)
    if name != product.nom:
        logging.info("[%s] new product name: [%s] > [%s]" % (data['user'].username, product.nom, name))
        product.nom = name
    if billname != product.nom_facture:
        logging.info("[%s] new product bill name [%s]: [%s] > [%s]" % (data['user'].username, product.nom, product.nom_facture, billname))
        product.nom_facture = billname

    try:
        product.save()
    except:
        messages.add_message(request, messages.ERROR, "Les modifications n'ont pu être enregistrées.")
        logging.warning("[%s] save failed for product [%s]" % (data['user'].username, product.nom))
    return HttpResponseRedirect('/carte/products/cat/%s/' % product.categorie.id)
Beispiel #10
0
vat_takeaway.set_tax("5")
vat_takeaway.save()

# on entre les nouveaux produits, les prix sont TTC
jus = Categorie(nom="Jus",
                priorite=25,
                surtaxable=False,
                disable_surtaxe=False,
                made_in_kitchen=False,
                color="#44b3dc",
                vat_onsite=vat_onsite,
                vat_takeaway=vat_takeaway)
jus.save()
abricot = Produit(nom="jus abricot",
                  prix="2.80",
                  choix_cuisson=False,
                  choix_dish=False,
                  choix_sauce=False,
                  categorie=jus)
abricot.save()
pomme = Produit(nom="jus pomme",
                prix="2.80",
                choix_cuisson=False,
                choix_dish=False,
                choix_sauce=False,
                categorie=jus)
pomme.save()

bieres = Categorie(nom="Bieres",
                   priorite=2,
                   surtaxable=False,
                   disable_surtaxe=False,
cu.execute("select id,red,green,blue from couleurs")
for id,red,green,blue in cu.fetchall():
    couleur = Couleur(id=id, red=red, green=green, blue=blue)
    couleur.save()

Couleur_get = Couleur.objects.get
print "> les categories et les produits"
cu.execute("select id,nom_facture,nom_ihm,priorite_facture,majoration_terrasse,id_couleur,is_alcool,override_surtaxe from categories")
for id,nom_facture,nom_ihm,priorite_facture,majoration_terrasse,id_couleur,is_alcool,override_surtaxe in cu.fetchall():
    couleur = Couleur_get(pk=id_couleur)
    categorie = Categorie(id=id, nom=nom_ihm, priorite=priorite_facture, surtaxable=majoration_terrasse, alcool=is_alcool, disable_surtaxe=override_surtaxe, couleur=couleur)
    categorie.save()

    cu.execute("select id,nom_facture,nom_ihm,prix_ttc,actif from produits where id_categorie=%s" % categorie.id)
    for id,nom_facture,nom_ihm,prix_ttc,actif in cu.fetchall():
        produit = Produit(id=id, nom=nom_ihm, nom_facture=nom_facture, prix=convert_prix(prix_ttc), actif=actif, categorie=categorie)
        produit.save()

Produit_get = Produit.objects.get
Categorie_get = Categorie.objects.get
print "> les menus"
cu.execute("select id_formule,id_categorie from formules_categories")
for id_formule,id_categorie in cu.fetchall():
    formule = Produit_get(id=id_formule)
    categorie = Categorie_get(id=id_categorie)
    formule.categories_ok.add(categorie)
    formule.save()
cu.execute("select id_formule,id_produit from formules_produits")
for id_formule,id_produit in cu.fetchall():
    formule = Produit_get(id=id_formule)
    produit = Produit_get(id=id_produit)
    categorie = Categorie(id=id,
                          nom=nom_ihm,
                          priorite=priorite_facture,
                          surtaxable=majoration_terrasse,
                          alcool=is_alcool,
                          disable_surtaxe=override_surtaxe,
                          couleur=couleur)
    categorie.save()

    cu.execute(
        "select id,nom_facture,nom_ihm,prix_ttc,actif from produits where id_categorie=%s"
        % categorie.id)
    for id, nom_facture, nom_ihm, prix_ttc, actif in cu.fetchall():
        produit = Produit(id=id,
                          nom=nom_ihm,
                          nom_facture=nom_facture,
                          prix=convert_prix(prix_ttc),
                          actif=actif,
                          categorie=categorie)
        produit.save()

Produit_get = Produit.objects.get
Categorie_get = Categorie.objects.get
print "> les menus"
cu.execute("select id_formule,id_categorie from formules_categories")
for id_formule, id_categorie in cu.fetchall():
    formule = Produit_get(id=id_formule)
    categorie = Categorie_get(id=id_categorie)
    formule.categories_ok.add(categorie)
    formule.save()
cu.execute("select id_formule,id_produit from formules_produits")
for id_formule, id_produit in cu.fetchall():
Beispiel #13
0
    def handle(self, *args, **options):
        # managers
        for username in ['demo', 'demo1', 'demo2']:
            user = User(username=username, first_name=username,
                        email="*****@*****.**" % username)
            user.set_password(username)
            user.is_superuser = True
            user.save()

        # staff members
        for username in ['staff', 'staff1', 'staff2']:
            user = User(username=username, first_name=username,
                        email="*****@*****.**" % username)
            user.set_password(username)
            user.save()

        # Type de paiements
        PaiementType(nom='AMEX', fixed_value=False).save()
        PaiementType(nom='ANCV', fixed_value=True).save()
        PaiementType(nom='CB', fixed_value=False).save()
        PaiementType(nom='Cheque', fixed_value=False).save()
        PaiementType(nom='Espece', fixed_value=False).save()
        PaiementType(nom='Tic. Resto.', fixed_value=True).save()

        # Type de paiements par défaut pour les remboursements lorsque
        # le paiement dépasse le montant de la facture
        id_type_paiement = PaiementType.objects.get(nom="Espece").id
        Config(key="payment_for_refunds", value=id_type_paiement).save()

        # Default PaymentType to select by default on the payment page
        id_type_paiement = PaiementType.objects.get(nom="Espece").id
        Config(key="default_type_payment", value=id_type_paiement).save()

        # Montant de la surtaxe
        Config(key="price_surcharge", value="0.20").save()

        # Tables
        z = Zone(nom='Bar', surtaxe=False)
        z.save()
        Table(nom="T--", zone=z).save()
        z = Zone(nom='Rez de chaussee', surtaxe=False)
        z.save()
        for i in xrange(1, 15):
            Table(nom="T%02d" % i, zone=z).save()
        z = Zone(nom='Terrasse', surtaxe=True)
        z.save()
        for i in xrange(15, 26):
            Table(nom="T%02d" % i, zone=z).save()

        # TVA
        vat_alcool = VAT(name="alcool")
        vat_alcool.set_tax("20")
        vat_alcool.save()
        vat_onsite = VAT(name="sur place")
        vat_onsite.set_tax("10")
        vat_onsite.save()
        vat_takeaway = VAT(name=u"à emporter")
        vat_takeaway.set_tax("7")
        vat_takeaway.save()

        # Options
        Option(name="A_Frites").save()
        Option(name="A_Salade").save()
        Option(name="S_Creme").save()
        Option(name="A_Haricots").save()
        Option(name="S_Mayo").save()

        # Notes
        Note(message="Pas de sel").save()
        Note(message="Sans champignon").save()

        #
        # Data example

        # on entre les nouveaux produits, les prix sont TTC
        jus = Categorie(nom="Jus",
                        priorite=25,
                        surtaxable=False,
                        disable_surtaxe=False,
                        made_in_kitchen=False,
                        color="#44b3dc",
                        vat_onsite=vat_onsite,
                        vat_takeaway=vat_takeaway)
        jus.save()
        abricot = Produit(nom="jus abricot",
                          prix="2.80",
                          choix_cuisson=False,
                          categorie=jus)
        abricot.save()
        pomme = Produit(nom="jus pomme",
                        prix="2.80",
                        choix_cuisson=False,
                        categorie=jus)
        pomme.save()

        bieres = Categorie(nom="Bieres",
                           priorite=2,
                           surtaxable=False,
                           disable_surtaxe=False,
                           made_in_kitchen=False,
                           color="#ea97b5",
                           vat_onsite=vat_alcool,
                           vat_takeaway=vat_alcool)
        bieres.save()
        biere = Produit(nom="biere 50cl",
                        prix="2.80",
                        choix_cuisson=False,
                        categorie=bieres)
        biere.save()

        entrees = Categorie(nom="Entrees",
                            priorite=5,
                            surtaxable=False,
                            disable_surtaxe=False,
                            made_in_kitchen=True,
                            color="#ff9f00",
                            vat_onsite=vat_onsite,
                            vat_takeaway=vat_takeaway)
        entrees.save()
        salade = Produit(nom="salade normande",
                         prix="3.40",
                         choix_cuisson=False,
                         categorie=entrees)
        salade.save()
        buffet = Produit(nom="buffet",
                         prix="6.40",
                         choix_cuisson=False,
                         categorie=entrees)
        buffet.save()

        plat = Categorie(nom="Plat",
                         priorite=10,
                         surtaxable=False,
                         disable_surtaxe=False,
                         made_in_kitchen=True,
                         color="#c9a100",
                         vat_onsite=vat_onsite,
                         vat_takeaway=vat_takeaway)
        plat.save()
        entrecote = Produit(nom="entrecote",
                            prix="8.40",
                            choix_cuisson=True,
                            categorie=plat)
        entrecote.save()
        pave = Produit(nom="pave de saumon",
                       prix="9.40",
                       choix_cuisson=False,
                       categorie=plat)
        pave.save()

        # pour les menu
        menu = Categorie(nom="Menu",
                         priorite=22,
                         surtaxable=False,
                         disable_surtaxe=False,
                         made_in_kitchen=False,
                         color="#88f027",
                         vat_onsite=vat_onsite,
                         vat_takeaway=vat_takeaway)
        menu.save()
        entree_plat = Produit(nom=u"Menu Entree/Plat",
                              prix="13.40",
                              choix_cuisson=False,
                              categorie=menu)
        entree_plat.save()
        entree_plat.categories_ok.add(entrees)
        entree_plat.categories_ok.add(plat)
        entree_plat.produits_ok.add(salade)
        entree_plat.produits_ok.add(entrecote)
        entree_plat.produits_ok.add(pave)
        entree_plat.save()

        # mis a jour des TTC et TVA
        for product in Produit.objects.all():
            product.update_vats(keep_clone=False)

        def create_bill(finish=True):
            """Create a bill
            """
            table = 'T%d' % random.randint(10, 25)
            bill = Facture(table=Table.objects.get(nom=table))
            bill.save()
            produits_bar = [biere, pomme, abricot]
            produits_guests = [salade, buffet, entrecote, pave]
            payments = ['CB', 'Espece', 'Cheque']
            if random.randint(1, 2) == 1:
                # guests part
                produits = produits_guests
                bill.couverts = random.randint(1, 15)
            else:
                produits = produits_bar
            nb_produits = random.randint(1, 6)
            for i in xrange(nb_produits):
                # random number of products
                nb_max = len(produits) - 1
                produit = produits[random.randint(0, nb_max)]
                sold = ProduitVendu(produit=produit)
                sold.save()
                bill.add_product(sold)
            # nouveau_menu = ProduitVendu(produit=entree_plat)
            # nouveau_menu.save()
            # for produit in [salade, pave]:
                # sold = ProduitVendu(produit=produit)
                # sold.save()
                # nouveau_menu.contient.add(sold)
            # nouveau_menu.save()
            bill.update()
            if finish:
                nb_max = len(payments) - 1
                name = payments[random.randint(0, nb_max)]
                type_payment = PaiementType.objects.get(nom=name)
                bill.add_payment(type_payment, bill.total_ttc)
            return bill

        # on ajoute des données pour avoir des jolies graphiques de
        # démonstrations
        now = datetime.datetime.now()
        for month in xrange(1, 13):
            for i in xrange(20):
                day = random.randint(1, 28)
                bill = create_bill()
                bill.date_creation = datetime.datetime(now.year, month, day)
                bill.save()

        # Création d'une dizaine de facture
        for i in xrange(15):
            bill = create_bill(finish=False)
            if i % 2:
                bill.update_kitchen()
                bill.print_ticket_kitchen()

        Stat().update()
Beispiel #14
0
#
#    You should have received a copy of the GNU General Public License
#    along with POSSUM.  If not, see <http://www.gnu.org/licenses/>.
#
import sys, os
sys.path.append('/home/pos')
os.environ['DJANGO_SETTINGS_MODULE'] = 'possum.settings'

from possum.base.models import Accompagnement, Sauce, Etat, \
    Categorie, Couleur, Cuisson, Facture, Log, LogType, Paiement, \
    PaiementType, Produit, ProduitVendu, Suivi, Table, Zone

# il faut une categorie
c = Categorie.objects.get(id=1)

for f in Facture.objects.exclude(restant_a_payer=0, produits__isnull=False):
    filter = Produit.objects.filter(prix=f.get_montant())
    count = filter.count()
    if count > 0:
        p = filter[0]
        print p.nom
    else:
        nom = "recuperation ancienne base (%0.2f)" % f.get_montant()
        print nom
        p = Produit(nom=nom, nom_facture=nom, prix=f.get_montant(), actif=False, categorie=c)
        p.save()
    vendu = ProduitVendu(produit=p, facture=f)
    vendu.save()
    f.produits.add(vendu)

Beispiel #15
0
    def handle(self, *args, **options):
        create_users()
        create_payment()

        # Montant de la surtaxe
        Config(key="price_surcharge", value="0.20").save()

        create_tables()

        # TVA
        vat_alcool = VAT(name="alcool")
        vat_alcool.set_tax("20")
        vat_alcool.save()
        vat_onsite = VAT(name="sur place")
        vat_onsite.set_tax("10")
        vat_onsite.save()
        vat_takeaway = VAT(name="à emporter")
        vat_takeaway.set_tax("7")
        vat_takeaway.save()

        # Options
        Option(name="A_Frites").save()
        Option(name="A_Salade").save()
        Option(name="S_Creme").save()
        Option(name="A_Haricots").save()
        Option(name="S_Mayo").save()

        # Notes
        Note(message="Pas de sel").save()
        Note(message="Sans champignon").save()

        #
        # Data example

        # on entre les nouveaux produits, les prix sont TTC
        jus = Categorie(nom="Jus",
                        priorite=25,
                        surtaxable=False,
                        disable_surtaxe=False,
                        made_in_kitchen=False,
                        color="#44b3dc",
                        vat_onsite=vat_onsite,
                        vat_takeaway=vat_takeaway)
        jus.save()
        abricot = Produit(nom="jus abricot",
                          prix="2.80",
                          choix_cuisson=False,
                          categorie=jus)
        abricot.save()
        pomme = Produit(nom="jus pomme",
                        prix="2.80",
                        choix_cuisson=False,
                        categorie=jus)
        pomme.save()

        bieres = Categorie(nom="Bieres",
                           priorite=2,
                           surtaxable=False,
                           disable_surtaxe=False,
                           made_in_kitchen=False,
                           color="#ea97b5",
                           vat_onsite=vat_alcool,
                           vat_takeaway=vat_alcool)
        bieres.save()
        biere = Produit(nom="biere 50cl",
                        prix="2.80",
                        choix_cuisson=False,
                        categorie=bieres)
        biere.save()

        entrees = Categorie(nom="Entrees",
                            priorite=5,
                            surtaxable=False,
                            disable_surtaxe=False,
                            made_in_kitchen=True,
                            color="#ff9f00",
                            vat_onsite=vat_onsite,
                            vat_takeaway=vat_takeaway)
        entrees.save()
        salade = Produit(nom="salade normande",
                         prix="3.40",
                         choix_cuisson=False,
                         categorie=entrees)
        salade.save()
        buffet = Produit(nom="buffet",
                         prix="6.40",
                         choix_cuisson=False,
                         categorie=entrees)
        buffet.save()

        plat = Categorie(nom="Plat",
                         priorite=10,
                         surtaxable=False,
                         disable_surtaxe=False,
                         made_in_kitchen=True,
                         color="#c9a100",
                         vat_onsite=vat_onsite,
                         vat_takeaway=vat_takeaway)
        plat.save()
        entrecote = Produit(nom="entrecote",
                            prix="8.40",
                            choix_cuisson=True,
                            categorie=plat)
        entrecote.save()
        pave = Produit(nom="pave de saumon",
                       prix="9.40",
                       choix_cuisson=False,
                       categorie=plat)
        pave.save()

        # pour les menu
        menu = Categorie(nom="Menu",
                         priorite=22,
                         surtaxable=False,
                         disable_surtaxe=False,
                         made_in_kitchen=False,
                         color="#88f027",
                         vat_onsite=vat_onsite,
                         vat_takeaway=vat_takeaway)
        menu.save()
        entree_plat = Produit(nom="Menu Entree/Plat",
                              prix="13.40",
                              choix_cuisson=False,
                              categorie=menu)
        entree_plat.save()
        entree_plat.categories_ok.add(entrees)
        entree_plat.categories_ok.add(plat)
        entree_plat.produits_ok.add(salade)
        entree_plat.produits_ok.add(entrecote)
        entree_plat.produits_ok.add(pave)
        entree_plat.save()

        # mis a jour des TTC et TVA
        for product in Produit.objects.all():
            product.update_vats(keep_clone=False)

        def create_bill(finish=True):
            """Create a bill
            """
            table = 'T%d' % random.randint(10, 25)
            bill = Facture(table=Table.objects.get(nom=table))
            bill.save()
            produits_bar = [biere, pomme, abricot]
            produits_guests = [salade, buffet, entrecote, pave]
            payments = ['CB', 'Espece', 'Cheque']
            if random.randint(1, 2) == 1:
                # guests part
                produits = produits_guests
                bill.couverts = random.randint(1, 15)
            else:
                produits = produits_bar
            nb_produits = random.randint(1, 6)
            for i in range(nb_produits):
                # random number of products
                nb_max = len(produits) - 1
                produit = produits[random.randint(0, nb_max)]
                sold = ProduitVendu(produit=produit)
                sold.save()
                bill.add_product(sold)
            # nouveau_menu = ProduitVendu(produit=entree_plat)
            # nouveau_menu.save()
            # for produit in [salade, pave]:
                # sold = ProduitVendu(produit=produit)
                # sold.save()
                # nouveau_menu.contient.add(sold)
            # nouveau_menu.save()
            bill.update()
            if finish:
                nb_max = len(payments) - 1
                name = payments[random.randint(0, nb_max)]
                type_payment = PaiementType.objects.get(nom=name)
                bill.add_payment(type_payment, bill.total_ttc)
            return bill

        # on ajoute des données pour avoir des jolies graphiques de
        # démonstrations
        now = datetime.datetime.now()
        for month in range(1, 13):
            for i in range(20):
                day = random.randint(1, 28)
                bill = create_bill()
                bill.date_creation = datetime.datetime(now.year, month, day)
                bill.save()

        # Création d'une dizaine de facture
        for i in range(15):
            bill = create_bill(finish=False)
            if i % 2:
                bill.update_kitchen()
                bill.print_ticket_kitchen()

        Stat().update()
Beispiel #16
0
###
# Data example

# on entre les nouveaux produits, les prix sont TTC
jus = Categorie(nom="Jus",
                priorite=25,
                surtaxable=False,
                disable_surtaxe=False,
                made_in_kitchen=False,
                color="#44b3dc",
                vat_onsite=vat_onsite,
                vat_takeaway=vat_takeaway)
jus.save()
abricot = Produit(nom="jus abricot",
                  prix="2.80",
                  choix_cuisson=False,
                  categorie=jus)
abricot.save()
pomme = Produit(nom="jus pomme",
                prix="2.80",
                choix_cuisson=False,
                categorie=jus)
pomme.save()

bieres = Categorie(nom="Bieres",
                   priorite=2,
                   surtaxable=False,
                   disable_surtaxe=False,
                   made_in_kitchen=False,
                   color="#ea97b5",
                   vat_onsite=vat_alcool,
Beispiel #17
0
def products_change(request, product_id):
    data = get_user(request)
    name = request.POST.get('name', '').strip()
    billname = request.POST.get('billname', '').strip()
    prize = request.POST.get('prize', '').strip()
    product = get_object_or_404(Produit, pk=product_id)
    if prize != str(product.prix):
        # new prize, so we have to create a new product to keep statistics
        # and historics
        logging.info("[%s] new prize for [%s]: [%s] > [%s]" %
                     (data['user'].username, product.nom, product.prix, prize))
        old = product
        product = Produit()
        product.actif = old.actif
        old.actif = False
        old.save()
        product.prix = prize
        product.nom = old.nom
        product.nom_facture = old.nom_facture
        product.choix_cuisson = old.choix_cuisson
        product.choix_accompagnement = old.choix_accompagnement
        product.choix_sauce = old.choix_sauce
        product.categorie = old.categorie
        try:
            product.save()
            for c in old.categories_ok.distinct():
                product.categories_ok.add(c)
            for p in old.produits_ok.distinct():
                product.produits_ok.add(p)
            messages.add_message(
                request, messages.INFO,
                "Le prix d'un produit ne peut être modifié, en conséquence un nouveau produit a été créé et l'ancien a été désactivé."
            )
        except:
            messages.add_message(
                request, messages.ERROR,
                "Les modifications n'ont pu être enregistrées.")
            logging.warning("[%s] save failed for product [%s]" %
                            (data['user'].username, product.nom))
            return HttpResponseRedirect('/carte/products/cat/%s/' %
                                        product.categorie.id)
    if name != product.nom:
        logging.info("[%s] new product name: [%s] > [%s]" %
                     (data['user'].username, product.nom, name))
        product.nom = name
    if billname != product.nom_facture:
        logging.info("[%s] new product bill name [%s]: [%s] > [%s]" %
                     (data['user'].username, product.nom, product.nom_facture,
                      billname))
        product.nom_facture = billname

    try:
        product.save()
    except:
        messages.add_message(request, messages.ERROR,
                             "Les modifications n'ont pu être enregistrées.")
        logging.warning("[%s] save failed for product [%s]" %
                        (data['user'].username, product.nom))
    return HttpResponseRedirect('/carte/products/cat/%s/' %
                                product.categorie.id)