# Copyright 2018-Today datenpol gmbh () # License OPL-1 or later (https://www.odoo.com/documentation/user/11.0/legal/licenses/licenses.html#licenses). from odoo import tools, api, fields, models, _ from odoo.exceptions import ValidationError, UserError, Warning import json import requests class WizardResetOrder(models.TransientModel): _name = 'wizard.reset_order' _description = 'Reset imos-Order' # name = fields.Char() # # @api.onchange('name') # def _onchange_name(self): # return { # 'warning': { # 'title': _('Warning!'), # 'message': _("Achtung, es gab Fehler"), # } # } @api.multi def button_reset_order(self): for wizard in self: error_at_quotation = False info = 'Bitte prüfen Sie den Angebotsstatus & Auftragsart folgender Angebote:' active_ids = self.env.context.get('active_ids', []) sale_orders = self.env['sale.order'].browse(active_ids) if sale_orders.exists(): for so in sale_orders: if so.state == 'cancel' and so.order_type == 'D': info += "\n %s -- OK" % so.name else: info += "\n %s state='%s',order_type='%s'" % (so.name,so.state,so.order_type) error_at_quotation = True if error_at_quotation: raise ValidationError(_(info)) info = 'Mindestens ein Warenkorb konnte nicht zurückgesetzt werden:' for so in sale_orders: order_info = self.reset_order_status(so.origin) if order_info != '': error_at_quotation = True info += "\n%s" % order_info so.message_post(body='Warenkorb konnte im DesignBox-Portal nicht zurückgesetzt werden!\n %s' % order_info) else: info += "\n%s --> OK" % so.name so.message_post(body='Warenkorb im DesignBox-Portal zurückgesetzt!\n%s --> OK' % so.origin) if error_at_quotation: raise Warning(_(info)) # self.name = _(info) action = self.env.ref('sale.action_orders').read()[0] action['domain'] = [('id', 'in', active_ids)] return action def reset_order_status(self, order_id): self.ensure_one() imos_base_url = tools.config.get('imos_base_url') imos_pass = tools.config.get('imos_pass') imos_url = imos_base_url + r'&tx_imosnetpublic_api[controller]=Basket&tx_imosnetpublic_api[action]=update' idata = {"uid" : int(order_id[-6:]), "status" : 0} data = { 'pass' : imos_pass, 'user' : 'publicapiuser', 'pid' : 5, 'logintype' : 'login', 'tx_imosnetpublic_api[data]' : json.dumps(idata) } response = requests.post(imos_url, data=data) info = '' try: lRes = json.loads(response.content.decode()) except Exception as e: info = 'unexpected error %s' % e raise ValidationError(_(info)) if response.status_code == 200: if lRes.get('status') != 0: info = "Warenkorb: %s, Fehler='%s'" % (order_id,lRes) else: if lRes.get('status') != 0: info = "Warenkorb: %s, Fehler='%s'" % (order_id,lRes.get('data')) return info