Ejemplo n.º 1
0
 def run(self, binding_id):
     """
     Export the picking to Magento
     """
     picking = self.session.browse(self.model._name, binding_id)
     picking_method = picking.picking_method
     if picking_method == 'complete':
         args = self._get_args(picking)
     elif picking_method == 'partial':
         lines_info = self._get_lines_info(picking)
         if not lines_info:
             raise NothingToDoJob(_('Canceled: the delivery order does not '
                                    'contain lines from the original '
                                    'sale order.'))
         args = self._get_args(picking, lines_info)
     else:
         raise ValueError("Wrong value for picking_method, authorized "
                          "values are 'partial' or 'complete', "
                          "found: %s" % picking_method)
     try:
         magento_id = self.backend_adapter.create(*args)
     except xmlrpclib.Fault as err:
         # When the shipping is already created on Magento, it returns:
         # <Fault 102: u"Impossible de faire
         # l\'exp\xe9dition de la commande.">
         if err.faultCode == 102:
             raise NothingToDoJob('Canceled: the delivery order already '
                                  'exists on Magento (fault 102).')
         else:
             raise
     else:
         self.binder.bind(magento_id, binding_id)
Ejemplo n.º 2
0
 def _rule_global(self, record, method):
     """ Rule always executed, whichever is the selected rule """
     # the order has been canceled since the job has been created
     order_id = record['increment_id']
     if record['state'] == 'canceled':
         raise NothingToDoJob('Order %s canceled' % order_id)
     max_days = method.days_before_cancel
     if max_days:
         fmt = '%Y-%m-%d %H:%M:%S'
         order_date = datetime.strptime(record['created_at'], fmt)
         if order_date + timedelta(days=max_days) < datetime.now():
             raise NothingToDoJob('Import of the order %s canceled '
                                  'because it has not been paid since %d '
                                  'days' % (order_id, max_days))
Ejemplo n.º 3
0
    def _import_dependencies(self):
        record = self.prestashop_record
        try:
            self._check_dependency(record['id_supplier'],
                                   'prestashop.supplier')
            self._check_dependency(record['id_product'],
                                   'prestashop.product.product')

            if record['id_product_attribute'] != '0':
                self._check_dependency(record['id_product_attribute'],
                                       'prestashop.product.combination')
        except PrestaShopWebServiceError:
            raise NothingToDoJob('Error fetching a dependency')
Ejemplo n.º 4
0
    def _import_dependencies(self):
        record = self.tienda_nube_record
        try:
            self._import_dependency(record['id_supplier'],
                                    'tienda_nube.supplier')
            self._import_dependency(record['id_product'],
                                    'tienda_nube.product.template')

            if record['id_product_attribute'] != '0':
                self._import_dependency(record['id_product_attribute'],
                                        'tienda_nube.product.combination')
        except TiendaNubeWebServiceError:
            raise NothingToDoJob('Error fetching a dependency')
 def _rule_global(self, record, method):
     """ Rule always executed, whichever is the selected rule """
     order_id = record['id']
     max_days = method.days_before_cancel
     if not max_days:
         return
     if self._get_paid_amount(record) != 0.0:
         return
     fmt = '%Y-%m-%d %H:%M:%S'
     order_date = datetime.strptime(record['date_add'], fmt)
     if order_date + timedelta(days=max_days) < datetime.now():
         raise NothingToDoJob('Import of the order %s canceled '
                              'because it has not been paid since %d '
                              'days' % (order_id, max_days))
Ejemplo n.º 6
0
    def _rule_state(self, record, mode):
        """Check if order is importable by its state.

        If `backend_record.importable_order_state_ids` is valued
        we check if current order is in the list.
        If not, the job fails gracefully.
        """
        if self.backend_record.importable_order_state_ids:
            ps_state_id = record['current_state']
            state = self.binder_for('prestashop.sale.order.state').to_odoo(
                ps_state_id, unwrap=1)
            if not state:
                raise FailedJobError(
                    _("The configuration is missing "
                      "for sale order state with PS ID=%s.\n\n"
                      "Resolution:\n"
                      " - Use the automatic import in 'Connectors > PrestaShop "
                      "Backends', button 'Synchronize base data'.") %
                    (ps_state_id, ))
            if state not in self.backend_record.importable_order_state_ids:
                raise NothingToDoJob(
                    _('Import of the order with PS ID=%s canceled '
                      'because its state is not importable') % record['id'])
Ejemplo n.º 7
0
 def _rule_never(self, record, method):
     """ Never import the order """
     raise NothingToDoJob('Orders with payment method %s '
                          'are never imported.' %
                          record['payment']['method'])