91 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
| # Copyright 2018-Today datenpol gmbh (<http://www.datenpol.at>)
 | |
| # 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
 |