def create_transaction(): ''' Creates a transaction for the user's shopping cart. Apparently, adding relations to transient transactions somehow automatically adds them to the current session. As we usually don't want to commit semi-complete transactions, DB modifications are prepent with session.rollback(). ''' ta = Transaction() lending = session_or_empty('lend') buying = session_or_empty('buy') ta.group = session_or_empty('group') if ta.group == []: ta.group = 'int' for id in lending: item = Item.query.get(id) ta.lend[id] = Lend(item, lending[id]) for id in buying: item = Item.query.get(id) ta.buy[id] = Buy(item, buying[id]) ta.date_start = session_or_empty('date_start') ta.date_end = session_or_empty('date_end') ta.name = session_or_empty('name') ta.email = session_or_empty('email') ta.tel = session_or_empty('tel') g.ta = ta
def click_item(self, row, column, *args): last_column = self.hheaders.__len__() - 1 if column != last_column: return try: from ui.buy_show import BuyShowViewWidget self.parent.change_main_context(BuyShowViewWidget, buy=Buy.get(id=self.data[row][0])) except IndexError: pass
def item_buy(id): ta = g.ta if id in ta.buy: ta.buy[id].amount += 1 else: it = Item.query.get(id) ta.buy[id] = Buy(it) #flash('%s eingepackt.'%id, 'success') return same()
def contribute(request, pk): item = get_object_or_404(Item, pk=pk) contribution = None buy = None if Buy.objects.filter(user=request.user, item=item).exists(): buy = Buy.objects.get(user=request.user, item=item) contribution = buy.amount if request.method == 'POST': form = ContributionForm(request.POST) if form.is_valid(): item.price = form.cleaned_data["estimation"] item.save() if not buy: buy = Buy() buy.user = request.user buy.item = item buy.amount = form.cleaned_data["contribution"] buy.save() messages.success(request, _("Saved")) return redirect('person-detail', item.user.username) else: form = ContributionForm(initial={ 'estimation': item.price, 'contribution': contribution}) data = { 'form': form, 'item': item } return render(request, 'contribution.html', data)
def click_item(self, row, column, *args): last_column = self.hheaders.__len__() - 1 if column != last_column: return from ui.buy_show import BuyShowViewWidget try: self.parent.open_dialog(BuyShowViewWidget, modal=True, opacity=100, table_p=self, buy=Buy.get(id=self.data[row][0])) except Exception as e: print(e)
def save_b(self): ''' add operation ''' # entete de la facture if not self.table_buy.isvalid: return False owner = Owner.get(Owner.islog == True) date = str(self.date.text()) values_t = self.table_buy.get_table_items() buy = Buy() # buy.date = datetime_ buy.provd_or_clt = \ ProviderOrClient.get_or_create( "Fournisseur", 000000, ProviderOrClient.FSEUR) buy.owner = owner try: buy.save() err = False except: raise raise_error("Erreur", u"Impossible d'enregistrer l'entête de la facture") return False for name, qty, cost_buying, selling_price in values_t: rep = Report() rep.buy = buy rep.type_ = Report.E rep.store = 1 rep.date = date_to_datetime(date) rep.product = Product.get(name=name) rep.qty = int(qty) rep.cost_buying = int(cost_buying) rep.selling_price = int(selling_price) try: rep.save() except Exception as e: print(e) err = True if err: buy.delete_instance() raise_error( "Erreur", u"Ce mouvement n'a pas pu etre " u"enregistré dans les rapports") return False else: self.parent.Notify(u"L'entrée des articles avec succès", "success") self.change_main_context(BuyShowViewWidget, buy=buy)
def save_b(self): ''' add operation ''' # entete de la facture if not self.table_buy.isvalid: return False owner = Owner.get(Owner.islog == True) date = str(self.date.text()) values_t = self.table_buy.get_table_items() buy = Buy() # buy.date = datetime_ buy.provd_or_clt = \ ProviderOrClient.get_or_create( "Fournisseur", 000000, ProviderOrClient.FSEUR) buy.owner = owner try: buy.save() err = False except: raise raise_error( "Erreur", u"Impossible d'enregistrer l'entête de la facture") return False for name, qty, cost_buying, selling_price in values_t: rep = Report() rep.buy = buy rep.type_ = Report.E rep.store = 1 rep.date = date_to_datetime(date) rep.product = Product.get(name=name) rep.qty = int(qty) rep.cost_buying = int(cost_buying) rep.selling_price = int(selling_price) try: rep.save() except Exception as e: print(e) err = True if err: buy.delete_instance() raise_error("Erreur", u"Ce mouvement n'a pas pu etre " u"enregistré dans les rapports") return False else: self.parent.Notify(u"L'entrée des articles avec succès", "success") self.change_main_context(BuyShowViewWidget, buy=buy)
def add_to_cart(): if not session.is_logged(): flash("Voce precisa estar logado para fazer isso") return redirect(url_for('auth.login')) else: product_id = int(request.form['product_id']) quant = int(request.form['quant']) if not product_id or not quant: flash("Informações faltantes") return redirect(url_for('store.index')) else: product: Product = Product.query.filter_by( id=product_id).first_or_404("Produto não encontrado") user: User = User.query.filter_by( id=session.get()).first_or_404("Usuario invalido") if product.stock <= 0 or quant > product.stock: flash("Quantidade do produto indisponivel") return redirect(url_for('store.product', id=product_id)) else: buy: Buy = Buy.query.filter_by(user_id=session.get(), product_id=product_id).first() # Check if alredy have the buy with this product if buy is None: buy = Buy(user, product, quant) db.session.add(buy) else: buy.n_items += quant user.n_items += quant user.subtotal += product.price * quant product.stock -= quant db.session.commit() flash("Produto adicionado com sucesso ao seu carinho") return redirect(url_for('store.showcase'))
def set_data_for(self): self.data = [(buy.id, show_date(buy.date), "") for buy in Buy.select()]
def set_data_for(self): self.data = [(buy.id, buy.date, "") for buy in Buy.select()]