diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index ad99ae40058..455feb14afb 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -98,7 +98,7 @@ class account_invoice(models.Model): def _compute_reconciled(self): self.reconciled = self.test_paid() if not self.reconciled and self.state == 'paid': - self.signal_open_test() + self.signal_workflow('open_test') @api.model def _get_reference_type(self): diff --git a/addons/account/partner.py b/addons/account/partner.py index afbd9114c10..8c47967b44c 100644 --- a/addons/account/partner.py +++ b/addons/account/partner.py @@ -104,7 +104,7 @@ class account_fiscal_position(osv.osv): # partner manually set fiscal position always win if partner.property_account_position: - return part.property_account_position.id + return partner.property_account_position.id # if no delivery use invocing if delivery_id: diff --git a/addons/hr_attendance/static/src/css/attendance.css b/addons/hr_attendance/static/src/css/attendance.css index 2346e2b3a2d..767cfbc061a 100644 --- a/addons/hr_attendance/static/src/css/attendance.css +++ b/addons/hr_attendance/static/src/css/attendance.css @@ -1,3 +1,3 @@ .oe_systray #oe_attendance_sign_in_out_icon { - font-color: white; + color: white; } \ No newline at end of file diff --git a/addons/im_chat/static/src/css/im_chat.css b/addons/im_chat/static/src/css/im_chat.css index ce32d7d4597..6f76ceae193 100644 --- a/addons/im_chat/static/src/css/im_chat.css +++ b/addons/im_chat/static/src/css/im_chat.css @@ -14,7 +14,6 @@ /* button */ .oe_systray #oe_topbar_imbutton_icon { color: white; - margin-right: 10px; } .oe_topbar_item.oe_topbar_imbutton .oe_e { position: relative; diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 73d0688a543..453bfe5c458 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -884,7 +884,7 @@ class mrp_production(osv.osv): production = self.browse(cr, uid, production_id, context=context) if not production.move_lines and production.state == 'ready': # trigger workflow if not products to consume (eg: services) - self.signal_button_produce(cr, uid, [production_id]) + self.signal_workflow(cr, uid, [production_id], 'button_produce') produced_qty = self._get_produced_qty(cr, uid, production, context=context) @@ -944,7 +944,7 @@ class mrp_production(osv.osv): stock_mov_obj.action_done(cr, uid, [extra_move_id], context=context) self.message_post(cr, uid, production_id, body=_("%s produced") % self._description, context=context) - self.signal_button_produce_done(cr, uid, [production_id]) + self.signal_workflow(cr, uid, [production_id], 'button_produce_done') return True def _costs_generate(self, cr, uid, production): diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index 50650b7b371..06eacc6a1a2 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -114,7 +114,7 @@ class procurement_order(osv.osv): procurement.refresh() self.production_order_create_note(cr, uid, procurement, context=context) production_obj.action_compute(cr, uid, [produce_id], properties=[x.id for x in procurement.property_ids]) - production_obj.signal_button_confirm(cr, uid, [produce_id]) + production_obj.signal_workflow(cr, uid, [produce_id], 'button_confirm') else: res[procurement.id] = False self.message_post(cr, uid, [procurement.id], body=_("No BoM exists for this product!"), context=context) diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index e04c434a741..2718b77d051 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -159,7 +159,7 @@ class StockMove(osv.osv): 'consumed_for': consumed_for}, context=context) self.action_done(cr, uid, res, context=context) production_ids = production_obj.search(cr, uid, [('move_lines', 'in', [move.id])]) - production_obj.signal_button_produce(cr, uid, production_ids) + production_obj.signal_workflow(cr, uid, production_ids, 'button_produce') for new_move in res: if new_move != move.id: #This move is not already there in move lines of production order @@ -181,7 +181,7 @@ class StockMove(osv.osv): #If we are not scrapping our whole move, tracking and lot references must not be removed production_ids = production_obj.search(cr, uid, [('move_lines', 'in', [move.id])]) for prod_id in production_ids: - production_obj.signal_button_produce(cr, uid, [prod_id]) + production_obj.signal_workflow(cr, uid, [prod_id], 'button_produce') for new_move in new_moves: production_obj.write(cr, uid, production_ids, {'move_lines': [(4, new_move)]}) res.append(new_move) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 1eec3cb48d4..5c8103c7626 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -497,7 +497,7 @@ class pos_session(osv.osv): _('Error!'), _("You cannot confirm all orders of this session, because they have not the 'paid' status")) else: - pos_order_obj.signal_done(cr, uid, [order.id]) + pos_order_obj.signal_workflow(cr, uid, [order.id], 'done') return True @@ -581,14 +581,14 @@ class pos_order(osv.osv): order_ids.append(order_id) try: - self.signal_paid(cr, uid, [order_id]) + self.signal_workflow(cr, uid, [order_id], 'paid') except Exception as e: _logger.error('Could not fully process the POS Order: %s', tools.ustr(e)) if to_invoice: self.action_invoice(cr, uid, [order_id], context) order_obj = self.browse(cr, uid, order_id, context) - self.pool['account.invoice'].signal_invoice_open(cr, uid, [order_obj.invoice_id.id]) + self.pool['account.invoice'].signal_workflow(cr, uid, [order_obj.invoice_id.id], 'invoice_open') return order_ids @@ -933,8 +933,8 @@ class pos_order(osv.osv): inv_line['invoice_line_tax_id'] = [(6, 0, [x.id for x in line.product_id.taxes_id] )] inv_line_ref.create(cr, uid, inv_line, context=context) inv_ref.button_reset_taxes(cr, uid, [inv_id], context=context) - self.signal_invoice(cr, uid, [order.id]) - inv_ref.signal_validate(cr, uid, [inv_id]) + self.signal_workflow(cr, uid, [order.id], 'invoice') + inv_ref.signal_workflow(cr, uid, [inv_id], 'validate') if not inv_ids: return {} diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index e8622de493d..da14954d4a0 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -328,7 +328,7 @@ class purchase_order(osv.osv): raise osv.except_osv(_('Invalid Action!'), _('In order to delete a purchase order, you must cancel it first.')) # automatically sending subflow.delete upon deletion - self.signal_purchase_cancel(cr, uid, unlink_ids) + self.signal_workflow(cr, uid, unlink_ids, 'purchase_cancel') return super(purchase_order, self).unlink(cr, uid, unlink_ids, context=context) @@ -519,7 +519,7 @@ class purchase_order(osv.osv): This function prints the request for quotation and mark it as sent, so that we can see more easily the next step of the workflow ''' assert len(ids) == 1, 'This option should only be used for a single id at a time' - self.signal_send_rfq(cr, uid, ids) + self.signal_workflow(cr, uid, ids, 'send_rfq') return self.pool['report'].get_action(cr, uid, ids, 'purchase.report_purchasequotation', context=context) def wkf_confirm_order(self, cr, uid, ids, context=None): @@ -680,19 +680,19 @@ class purchase_order(osv.osv): _('Unable to cancel the purchase order %s.') % (purchase.name), _('First cancel all receptions related to this purchase order.')) self.pool.get('stock.picking') \ - .signal_button_cancel(cr, uid, map(attrgetter('id'), purchase.picking_ids)) + .signal_workflow(cr, uid, map(attrgetter('id'), purchase.picking_ids), 'button_cancel') for inv in purchase.invoice_ids: if inv and inv.state not in ('cancel', 'draft'): raise osv.except_osv( _('Unable to cancel this purchase order.'), _('You must first cancel all invoices related to this purchase order.')) self.pool.get('account.invoice') \ - .signal_invoice_cancel(cr, uid, map(attrgetter('id'), purchase.invoice_ids)) + .signal_workflow(cr, uid, map(attrgetter('id'), purchase.invoice_ids), 'invoice_cancel') self.pool['purchase.order.line'].write(cr, uid, [l.id for l in purchase.order_line], {'state': 'cancel'}) self.write(cr, uid, ids, {'state': 'cancel'}) self.set_order_line_status(cr, uid, ids, 'cancel', context=context) - self.signal_purchase_cancel(cr, uid, ids) + self.signal_workflow(cr, uid, ids, 'purchase_cancel') return True def _prepare_order_line_move(self, cr, uid, order, order_line, picking_id, group_id, context=None): @@ -933,7 +933,7 @@ class purchase_order(osv.osv): # make triggers pointing to the old orders point to the new order for old_id in old_ids: self.redirect_workflow(cr, uid, [(old_id, neworder_id)]) - self.signal_purchase_cancel(cr, uid, [old_id]) + self.signal_workflow(cr, uid, [old_id], 'purchase_cancel') return orders_info @@ -1370,7 +1370,7 @@ class mail_mail(osv.Model): if mail_sent and mail.model == 'purchase.order': obj = self.pool.get('purchase.order').browse(cr, uid, mail.res_id, context=context) if obj.state == 'draft': - self.pool.get('purchase.order').signal_send_rfq(cr, uid, [mail.res_id]) + self.pool.get('purchase.order').signal_workflow(cr, uid, [mail.res_id], 'send_rfq') return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context, mail_sent=mail_sent) @@ -1423,7 +1423,7 @@ class mail_compose_message(osv.Model): context = context or {} if context.get('default_model') == 'purchase.order' and context.get('default_res_id'): context = dict(context, mail_post_autofollow=True) - self.pool.get('purchase.order').signal_send_rfq(cr, uid, [context['default_res_id']]) + self.pool.get('purchase.order').signal_workflow(cr, uid, [context['default_res_id']], 'send_rfq') return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context) diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index a4908f23687..954547cb5b5 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -245,7 +245,7 @@ class purchase_requisition(osv.osv): for quotation in tender.purchase_ids: if (self.check_valid_quotation(cr, uid, quotation, context=context)): #use workflow to set PO state to confirm - po.signal_purchase_confirm(cr, uid, [quotation.id]) + po.signal_workflow(cr, uid, [quotation.id], 'purchase_confirm') #get other confirmed lines per supplier for po_line in tender.po_line_ids: @@ -268,13 +268,13 @@ class purchase_requisition(osv.osv): vals = self._prepare_po_line_from_tender(cr, uid, tender, line, new_po, context=context) poline.copy(cr, uid, line.id, default=vals, context=context) #use workflow to set new PO state to confirm - po.signal_purchase_confirm(cr, uid, [new_po]) + po.signal_workflow(cr, uid, [new_po], 'purchase_confirm') #cancel other orders self.cancel_unconfirmed_quotations(cr, uid, tender, context=context) #set tender to state done - self.signal_done(cr, uid, [tender.id]) + self.signal_workflow(cr, uid, [tender.id], 'done') return True def cancel_unconfirmed_quotations(self, cr, uid, tender, context=None): @@ -282,7 +282,7 @@ class purchase_requisition(osv.osv): po = self.pool.get('purchase.order') for quotation in tender.purchase_ids: if quotation.state in ['draft', 'sent', 'bid']: - self.pool.get('purchase.order').signal_purchase_cancel(cr, uid, [quotation.id]) + self.pool.get('purchase.order').signal_workflow(cr, uid, [quotation.id], 'purchase_cancel') po.message_post(cr, uid, [quotation.id], body=_('Cancelled by the call for bids associated to this request for quotation.'), context=context) return True diff --git a/addons/sale/i18n/pt.po b/addons/sale/i18n/pt.po index 62208c9e84a..db2251e1c15 100644 --- a/addons/sale/i18n/pt.po +++ b/addons/sale/i18n/pt.po @@ -328,7 +328,7 @@ msgstr "Cancelada" #. module: sale #: view:sale.order.line:0 msgid "Sales Order Lines related to a Sales Order of mine" -msgstr "Linhas da ordem de vendas relacionadas com uma ordem de vendas minha" +msgstr "Linhas da ordem de venda relacionadas com uma ordem de venda minha" #. module: sale #: selection:sale.order,state:0 @@ -589,7 +589,7 @@ msgstr "Ordem de venda confirmada" #. module: sale #: view:sale.order:0 msgid "Sales Order that haven't yet been confirmed" -msgstr "Ordem de Vendas que ainda não foram confirmadas" +msgstr "Ordens de Venda que ainda não foram confirmadas" #. module: sale #: view:sale.order:0 @@ -898,11 +898,11 @@ msgid "" "1.The state of this sales order line is either \"draft\" or \"cancel\"!\n" "2.The Sales Order Line is Invoiced!" msgstr "" -"Fatura não pode ser criada para esta linha de Ordem de vendas devido a uma " +"Fatura não pode ser criada para esta linha de Ordem de venda devido a uma " "das seguintes razões:\n" -"1.O estado desta linha ordem de vendas esteja como \"Projeto\" ou " +"1.O estado desta linha de ordem de venda seja \"Projeto\" ou " "\"cancelada\"!\n" -"2.A linha da ordem de vendas é faturada!" +"2.A linha da ordem de venda é faturada!" #. module: sale #: view:sale.order.line.make.invoice:0 @@ -1092,7 +1092,7 @@ msgstr "Termos e condições" #: model:ir.ui.menu,name:sale.menu_sale_order #: view:sale.order:0 msgid "Sales Orders" -msgstr "Ordens de Vendas" +msgstr "Ordens de Venda" #. module: sale #: help:sale.order,amount_tax:0 @@ -1230,7 +1230,7 @@ msgid "" "if the shipping policy is 'Payment before Delivery'." msgstr "" "O vendedor cria uma fatura manualmente, se a política de entrega da ordem de " -"vendas é 'Entrega Manual em Processamento'. A fatura é criada " +" é 'Entrega Manual em Processamento'. A fatura é criada " "automaticamente se a política de entrega é 'Pagamento depois da Entrega'." #. module: sale @@ -1336,7 +1336,7 @@ msgstr "" #. module: sale #: help:sale.order,origin:0 msgid "Reference of the document that generated this sales order request." -msgstr "Da referência do documento que gerou a ordem do pedido de vendas." +msgstr "Da referência do documento que gerou a ordem do pedido de ." #. module: sale #: code:addons/sale/sale.py:955 @@ -1431,7 +1431,7 @@ msgstr "Faturas de clientes" #. module: sale #: model:process.node,note:sale.process_node_order0 msgid "Confirmed sales order to invoice." -msgstr "Confirmação da fatura da ordem de vendas." +msgstr "Confirmação da fatura da ordem de venda." #. module: sale #: field:sale.order.line,sequence:0 @@ -1505,7 +1505,7 @@ msgstr "Fatura" #. module: sale #: view:sale.order.line:0 msgid "My Sales Order Lines" -msgstr "Minhas linhas da ordem de vendas" +msgstr "Minhas linhas da ordens de venda" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_cancel0 @@ -2034,7 +2034,7 @@ msgstr "" #. module: sale #: view:sale.report:0 msgid "Ordered month of the sales order" -msgstr "Ordenado pelo mês da ordem de vendas" +msgstr "Ordenado pelo mês da ordem de venda" #. module: sale #: model:process.transition,name:sale.process_transition_saleinvoice0 @@ -2054,7 +2054,7 @@ msgid "" "generates an invoice or a delivery order as soon as it is confirmed by the " "salesman." msgstr "" -"Dependendo da ordem de vendas e controle das faturas, estas pode ser " +"Dependendo da ordem de venda e controle das faturas, estas pode ser " "baseadas em entregas ou em quantidades encomendadas. Assim, uma ordem de " "venda pode gerar uma fatura ou uma ordem de entrega, assim que é confirmada " "pelo vendedor." @@ -2084,7 +2084,7 @@ msgstr "Termo do Pagamento" #. module: sale #: view:sale.order:0 msgid "Sales Order ready to be invoiced" -msgstr "Ordem de vendas pronta a ser faturada" +msgstr "Ordem de venda pronta a ser faturada" #. module: sale #: field:sale.config.settings,group_invoice_so_lines:0 @@ -2170,7 +2170,7 @@ msgstr "" #. module: sale #: view:sale.report:0 msgid "Ordered date of the sales order" -msgstr "Data do Pedido da ordem de vendas" +msgstr "Data do Pedido da ordem de venda" #~ msgid "Quantity (UoM)" #~ msgstr "Quantidade (UdM)" @@ -2474,7 +2474,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Contas de Pagamento" #~ msgid "Sales orders" -#~ msgstr "Ordens de Vendas" +#~ msgstr "Ordens de Venda" #~ msgid "Draft Invoice" #~ msgstr "Factura Rascunho" @@ -2598,7 +2598,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Somente Entregar Ordem de Venda" #~ msgid "Sales order lines" -#~ msgstr "Linhas da ordens de vendas" +#~ msgstr "Linhas de ordens de venda" #~ msgid "Packing OUT is created for stockable products." #~ msgstr "Saída de Embalagem é criada para produtos armazenáveis." @@ -2774,7 +2774,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Tem de associar um lote de produção a este artigo" #~ msgid "Margins in Sales Orders" -#~ msgstr "Fusão de ordens de vendas" +#~ msgstr "Fusão de ordens de venda" #~ msgid "You invoice has been successfully created!" #~ msgstr "A sua fatura foi criada com êxito!" @@ -2830,7 +2830,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Aprovisionamento do material vendido" #~ msgid "Sales Order Dates" -#~ msgstr "Datas da Ordem de Vendas" +#~ msgstr "Datas da Ordem de Venda" #~ msgid "Sales Application Configuration" #~ msgstr "Configuração da Aplicação de Vendas" @@ -2956,7 +2956,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ "directamente e aguardar que o utilizador clique no botão 'Factura' para " #~ "gerar a factura do projecto. \n" #~ " - A escolha 'Factura contra Entrega' irá gerar a factura com base em " -#~ "ordens de vendas, quando todas as listas de recolha forem concluídas.\n" +#~ "ordens de venda, quando todas as listas de recolha forem concluídas.\n" #~ " - A escolha 'Factura da Recolha' é usada para criar uma factura durante o " #~ "processo de recolha." @@ -2974,7 +2974,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ "For every sales order line, a procurement order is created to supply the " #~ "sold product." #~ msgstr "" -#~ "Para cada linha de pedido de vendas, uma ordem de aquisição é criada para " +#~ "Para cada linha de pedido de venda, uma ordem de aquisição é criada para " #~ "fornecer o artigo vendido." #~ msgid "Setup your sales workflow and default values." @@ -3008,10 +3008,10 @@ msgstr "Data do Pedido da ordem de vendas" #~ " " #~ msgstr "" #~ "\n" -#~ " O módulo base para gerir cotações e pedidos de vendas.\n" +#~ " O módulo base para gerir cotações e pedidos de venda.\n" #~ "\n" #~ " * Fluxo de trabalho com etapas de validação:\n" -#~ " - Cotação -> Ordem de Vendas -> Factura\n" +#~ " - Cotação -> Ordem de Venda -> Factura\n" #~ " * Métodos de facturação:\n" #~ " - Facturas ordenadas (antes ou depois do envio)\n" #~ " - Factura na entrega\n" @@ -3159,7 +3159,7 @@ msgstr "Data do Pedido da ordem de vendas" #, python-format #~ msgid "The sales order '%s' has been cancelled." -#~ msgstr "A ordem de vendas '%s' foi cancelada" +#~ msgstr "A ordem de venda '%s' foi cancelada" #~ msgid "" #~ "* The 'Draft' state is set when the related sales order in draft state. " @@ -3172,13 +3172,13 @@ msgstr "Data do Pedido da ordem de vendas" #~ " \n" #~ "* The 'Cancelled' state is set when a user cancel the sales order related." #~ msgstr "" -#~ "* O estado 'Rascunho' é definido quando a ordem de vendas relacionada se " +#~ "* O estado 'Rascunho' é definido quando a ordem de venda relacionada se " #~ "encontra em estado 'Rascunho'. \n" -#~ "* O estado 'Confirmado' é definido quando a ordem de vendas relacionada é " +#~ "* O estado 'Confirmado' é definido quando a ordem de venda relacionada é " #~ "confirmada. \n" #~ "* O estado 'Excepção' é definido quando a ordem relacionada é definida como " #~ "uma excepção. \n" -#~ "* O estado 'Feito' é definido quando a linha da ordem de vendas foi " +#~ "* O estado 'Feito' é definido quando a linha da ordem de venda foi " #~ "escolhida. \n" #~ "* O estado 'Cancelado' é definido quando o utilizador cancela a ordem de " #~ "vendar relacionada." @@ -3193,23 +3193,23 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Configure a aplicação da gerência de vendas" #~ msgid "Sales Order Layout Improvement" -#~ msgstr "Melhoria do Layout da Ordem vendas" +#~ msgstr "Melhoria do Layout da Ordem de venda" #~ msgid "" #~ "One Procurement order for each sales order line and for each of the " #~ "components." #~ msgstr "" -#~ "Uma ordem de Aquisições para cada linha de pedido de vendas e para cada um " +#~ "Uma ordem de Aquisições para cada linha de pedido de venda e para cada um " #~ "dos componentes." #, python-format #~ msgid "Cannot delete Sales Order(s) which are already confirmed !" #~ msgstr "" -#~ "Não é possível eliminar a(s) ordem(s) de vendas que já foram confirmadas !" +#~ "Não é possível eliminar a(s) ordem(s) de venda que já foram confirmadas !" #, python-format #~ msgid "The sales order '%s' has been set in draft state." -#~ msgstr "A ordem de vendas '%s' foi definida com o estado rascunho." +#~ msgstr "A ordem de venda '%s' foi definida com o estado rascunho." #~ msgid "" #~ "If you have more than one shop reselling your company products, you can " @@ -3243,7 +3243,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ "Provides some features to improve the layout of the Sales Order reports." #~ msgstr "" #~ "Fornece alguns recursos para melhorar a apresentação dos relatórios da Ordem " -#~ "de vendas." +#~ "de venda." #~ msgid "Based on Tasks' Work" #~ msgstr "Baseada nas tarefas' Trabalho" @@ -3264,7 +3264,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ "Sale Order Lines that are confirmed, done or in exception state and haven't " #~ "yet been invoiced" #~ msgstr "" -#~ "Linhas da ordem de vendas estão confirmadas, concluídas ou em estado de " +#~ "Linhas da ordem de venda estão confirmadas, concluídas ou em estado de " #~ "exceção e ainda não foram faturados" #~ msgid "Invoice based on deliveries" @@ -3304,7 +3304,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ "'para gerar o rascunho da fatura com base na ordem de venda ou as linhas da " #~ "ordem de venda.\n" #~ " - A opção 'Fatura após Entrega' irá gerar o rascunho da fatura baseada na " -#~ "ordem de vendas depois de todas as listas de picking terem sido terminadas.\n" +#~ "ordem de venda depois de todas as listas de picking terem sido terminadas.\n" #~ " - A opção 'Fatura baseada nas entregas' é usada para criar uma fatura " #~ "durante o processo de picking." @@ -3328,7 +3328,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Não pode mover os artigos de ou para um local de tipo vista." #~ msgid "Based on Sales Orders" -#~ msgstr "Baseado na ordem de vendas" +#~ msgstr "Baseado na ordem de venda" #~ msgid "Line Sequence" #~ msgstr "Sequência da linha" @@ -3371,7 +3371,7 @@ msgstr "Data do Pedido da ordem de vendas" #, python-format #~ msgid "Cannot delete a sales order line which is in state '%s'!" #~ msgstr "" -#~ "Não é possível excluir uma linha da ordem de vendas que esteja no estado " +#~ "Não é possível excluir uma linha da ordem de venda que esteja no estado " #~ "'%s'!" #, python-format @@ -3382,7 +3382,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Cobram a entrega?" #~ msgid "Sales order created in current month" -#~ msgstr "Ordens de vendas criadas este mês" +#~ msgstr "Ordens de venda criadas este mês" #~ msgid "" #~ "If 'on order', it triggers a procurement when the sale order is confirmed to " @@ -3403,7 +3403,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "${object.company_id.name} Order (Ref ${object.name or 'n/a' })" #~ msgid "Confirmed sale order lines, not yet delivered" -#~ msgstr "Linhas da ordem de vendas confirmadas, mas ainda não foram entregues" +#~ msgstr "Linhas da ordem de venda confirmadas, mas ainda não entregues" #~ msgid "Setup your Invoicing Method" #~ msgstr "Configure o seu método de faturação" @@ -3415,19 +3415,19 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Ordem de Impressão" #~ msgid "Sale order lines done" -#~ msgstr "Linhas da ordem de vendas concluídas" +#~ msgstr "Linhas da ordem de venda concluídas" #~ msgid "Sale Order Lines ready to be invoiced" -#~ msgstr "Linhas da ordem de vendas prontas para serem faturadas" +#~ msgstr "Linhas da ordem de venda prontas para serem faturadas" #~ msgid "Sale Order Lines that are in 'done' state" -#~ msgstr "Linhas da ordem de vendas que estejam no estado 'Concluído'" +#~ msgstr "Linhas da ordem de venda que estejam no estado 'Concluído'" #~ msgid "Main Method Based On" #~ msgstr "Métodos principais baseados" #~ msgid "Sales order created in current year" -#~ msgstr "Ordens de Vendas criadas este ano" +#~ msgstr "Ordens de Venda criadas este ano" #~ msgid "Contract/Analytic Account" #~ msgstr "Contrato / Conta Analítica" @@ -3450,7 +3450,7 @@ msgstr "Data do Pedido da ordem de vendas" #~ msgstr "Sem stock suficiente ! : " #~ msgid "Sales order created in last month" -#~ msgstr "Ordem de vendas criadas no mês passado" +#~ msgstr "Ordem de venda criadas no mês passado" #~ msgid "Deliver & invoice on demand" #~ msgstr "Entrega & Fatura a pedido" @@ -3467,8 +3467,8 @@ msgstr "Data do Pedido da ordem de vendas" #~ "sales orders partially, by lines of sales order. You do not need this list " #~ "if you invoice from the delivery orders or if you invoice sales totally." #~ msgstr "" -#~ "Aqui está uma lista de cada pedido de vendas a ser faturado. Pode faturar " -#~ "ordens de venda parcialmente, por linhas de pedido de vendas. Não precisa " +#~ "Aqui está uma lista de cada pedido de venda a ser faturado. Pode faturar " +#~ "ordens de venda parcialmente, por linhas de pedido de venda. Não precisa " #~ "desta lista se faturar os pedidos de entrega ou se facturar a venda " #~ "totalmente." @@ -3488,12 +3488,12 @@ msgstr "Data do Pedido da ordem de vendas" #~ "configuration of the sales order, a draft invoice will be generated so that " #~ "you just have to confirm it when you want to bill your customer." #~ msgstr "" -#~ "Pedidos de Vendas ajudá-lo a gerir citações e ordens de seus clientes. " +#~ "Ordens de Venda ajudam-no a gerir citações e ordens de seus clientes. " #~ "OpenERP sugere que se comece a criar um orçamento. Uma vez confirmada, a " #~ "cotação será convertida numa ordem de venda. O OpenERP pode gerir vários " #~ "tipos de artigos, possibilitando que uma ordem de venda desencadeie tarefas, " #~ "ordens de entrega, ordens de produção, compras e assim por diante. Com base " -#~ "na configuração da ordem de vendas, uma fatura projeto será gerada para que " +#~ "na configuração da ordem de venda, uma fatura projeto será gerada para que " #~ "só tenha que confirmar isso quando quiser faturar o cliente." #~ msgid "Order Line" @@ -3788,10 +3788,10 @@ msgstr "Data do Pedido da ordem de vendas" #~ "parts to the sales order. There is 1 pick list by sales order line which " #~ "evolves with the availability of parts." #~ msgstr "" -#~ "O formulário da Lista Pick é criado assim que a ordem de vendas é " +#~ "O formulário da Lista Pick é criado assim que a ordem de venda é " #~ "confirmada, ao mesmo tempo que a ordem de aquisição. Ele representa a " -#~ "atribuição de peças para a ordem de vendas. Há uma lista de seleção de linha " -#~ "da ordem de vendas que evolui com a disponibilidade das peças." +#~ "atribuição de peças para a ordem de venda. Há uma lista de seleção de linha " +#~ "da ordem de venda que evolui com a disponibilidade das peças." #~ msgid "Sales by Month" #~ msgstr "Vendas por mês" @@ -3802,14 +3802,14 @@ msgstr "Data do Pedido da ordem de vendas" #~ "production of products regarding to the rules and to the sales order's " #~ "parameters. " #~ msgstr "" -#~ "A ordem de aquisição é criada automaticamente, logo que uma ordem de vendas " +#~ "A ordem de aquisição é criada automaticamente, logo que uma ordem de venda " #~ "é confirmada ou a fatura é paga. Que impulsiona a compra e a produção de " -#~ "artigos em relação às regras e aos parâmetros da ordem de vendas. " +#~ "artigos em relação às regras e aos parâmetros da ordem de venda. " #, python-format #~ msgid "You must first cancel all invoices attached to this sales order." #~ msgstr "" -#~ "É necessário cancelar todas as faturas ligadas a esta ordem de vendas." +#~ "É necessário cancelar todas as faturas ligadas a esta ordem de venda." #~ msgid "Invoice Based on Deliveries" #~ msgstr "Fatura Baseada em Entregas" diff --git a/addons/sale/wizard/sale_make_invoice.py b/addons/sale/wizard/sale_make_invoice.py index 170259824f7..073c2481160 100644 --- a/addons/sale/wizard/sale_make_invoice.py +++ b/addons/sale/wizard/sale_make_invoice.py @@ -60,7 +60,7 @@ class sale_make_invoice(osv.osv_memory): for i in o.invoice_ids: newinv.append(i.id) # Dummy call to workflow, will not create another invoice but bind the new invoice to the subflow - order_obj.signal_manual_invoice(cr, uid, [o.id for o in orders if o.order_policy == 'manual']) + order_obj.signal_workflow(cr, uid, [o.id for o in orders if o.order_policy == 'manual'], 'manual_invoice') result = mod_obj.get_object_reference(cr, uid, 'account', 'action_invoice_tree1') id = result and result[1] or False result = act_obj.read(cr, uid, [id], context=context)[0] diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py index 61183413a33..20bac48c562 100644 --- a/addons/sale_stock/sale_stock.py +++ b/addons/sale_stock/sale_stock.py @@ -159,7 +159,7 @@ class sale_order(osv.osv): raise osv.except_osv( _('Cannot cancel sales order!'), _('You must first cancel all delivery order(s) attached to this sales order.')) - stock_obj.signal_button_cancel(cr, uid, [p.id for p in sale.picking_ids]) + stock_obj.signal_workflow(cr, uid, [p.id for p in sale.picking_ids], 'button_cancel') return super(sale_order, self).action_cancel(cr, uid, ids, context=context) def action_wait(self, cr, uid, ids, context=None): @@ -356,7 +356,7 @@ class stock_move(osv.osv): if move.procurement_id and move.procurement_id.sale_line_id: sale_ids.append(move.procurement_id.sale_line_id.order_id.id) if sale_ids: - self.pool.get('sale.order').signal_ship_except(cr, uid, sale_ids) + self.pool.get('sale.order').signal_workflow(cr, uid, sale_ids, 'ship_except') return super(stock_move, self).action_cancel(cr, uid, ids, context=context) def _create_invoice_line_from_vals(self, cr, uid, move, invoice_line_vals, context=None): diff --git a/addons/sale_stock/test/cancel_order_sale_stock.yml b/addons/sale_stock/test/cancel_order_sale_stock.yml index 302cbf4a933..49835b064c9 100644 --- a/addons/sale_stock/test/cancel_order_sale_stock.yml +++ b/addons/sale_stock/test/cancel_order_sale_stock.yml @@ -76,7 +76,7 @@ !python {model: sale.order}: | invoice_ids = self.browse(cr, uid, ref("sale.sale_order_8")).invoice_ids first_invoice_id = invoice_ids[0] - self.pool.get('account.invoice').signal_invoice_cancel(cr, uid, [first_invoice_id.id]) + self.pool.get('account.invoice').signal_workflow(cr, uid, [first_invoice_id.id], 'invoice_cancel') - I check order status in "Invoice Exception" and related invoice is in cancel state. - diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml index 57ba0323b4c..8de8ea45a08 100644 --- a/addons/sale_stock/test/picking_order_policy.yml +++ b/addons/sale_stock/test/picking_order_policy.yml @@ -190,7 +190,7 @@ so = self.browse(cr, uid, ref("sale_order_service")) account_invoice_obj = self.pool.get('account.invoice') for invoice in so.invoice_ids: - account_invoice_obj.signal_invoice_open(cr, uid, [invoice.id]) + account_invoice_obj.signal_workflow(cr, uid, [invoice.id], 'invoice_open') - I pay the invoice - diff --git a/addons/stock/wizard/make_procurement_product.py b/addons/stock/wizard/make_procurement_product.py index 73dda6bbb3e..5c6f4b618ee 100644 --- a/addons/stock/wizard/make_procurement_product.py +++ b/addons/stock/wizard/make_procurement_product.py @@ -76,7 +76,7 @@ class make_procurement(osv.osv_memory): 'location_id': wh.lot_stock_id.id, 'company_id': wh.company_id.id, }) - procurement_obj.signal_button_confirm(cr, uid, [procure_id]) + procurement_obj.signal_workflow(cr, uid, [procure_id], 'button_confirm') id2 = data_obj._get_id(cr, uid, 'procurement', 'procurement_tree_view') id3 = data_obj._get_id(cr, uid, 'procurement', 'procurement_form_view') diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index acdcc0a95aa..b76bee29a59 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -8,7 +8,6 @@ font-weight: normal; font-style: normal; } - @font-face { font-family: "EntypoRegular"; src: url("/web/static/src/font/entypo-webfont.eot") format("eot"); @@ -19,7 +18,6 @@ font-weight: normal; font-style: normal; } - #oe_main_menu_navbar { min-height: 34px; z-index: 1001; @@ -39,6 +37,39 @@ margin-bottom: 0px; } +.oe_systray { + margin-right: 0px !important; +} + +.oe_notification { + z-index: 1600; +} + +.oe_webclient_timezone_notification a { + color: white; + text-decoration: underline; +} +.oe_webclient_timezone_notification p { + margin-top: 1em; +} +.oe_webclient_timezone_notification dt { + font-weight: bold; +} + +.oe_timezone_systray span { + margin-top: 1px; + background-color: #f6cf3b; +} + +.navbar .oe_topbar_name { + max-width: 150px; + display: inline-block; + height: 15px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + .openerp { padding: 0; margin: 0; @@ -800,23 +831,6 @@ border-bottom-right-radius: 8px; border-bottom-left-radius: 8px; } -.openerp .oe_notification { - z-index: 1500; -} -.openerp .oe_webclient_timezone_notification a { - color: white; - text-decoration: underline; -} -.openerp .oe_webclient_timezone_notification p { - margin-top: 1em; -} -.openerp .oe_webclient_timezone_notification dt { - font-weight: bold; -} -.openerp .oe_timezone_systray span { - margin-top: 1px; - background-color: #f6cf3b; -} .openerp .oe_dialog_warning { width: 100%; } @@ -847,133 +861,6 @@ .openerp .oe_content_full_screen .oe_topbar, .openerp .oe_content_full_screen .oe_leftbar { display: none; } -.openerp .navbar .oe_topbar_anonymous_login { - background-color: #dc5f59; - color: #eeeeee; - background-color: #be4343; - background-image: -webkit-gradient(linear, left top, left bottom, from(#fc8787), to(maroon)); - background-image: -webkit-linear-gradient(top, #fc8787, maroon); - background-image: -moz-linear-gradient(top, #fc8787, maroon); - background-image: -ms-linear-gradient(top, #fc8787, maroon); - background-image: -o-linear-gradient(top, #fc8787, maroon); - background-image: linear-gradient(to bottom, #fc8787, #800000); -} -.openerp .navbar .oe_topbar_anonymous_login a { - display: block; - padding: 5px 10px 7px; - line-height: 20px; - height: 30px; - text-decoration: none; - color: white; - background: transparent; - -webkit-transition: all 0.2s ease-out; - -moz-transition: all 0.2s ease-out; - -ms-transition: all 0.2s ease-out; - -o-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; -} -.openerp .navbar .oe_topbar_anonymous_login a:hover { - background: rgba(0, 0, 0, 0.1); - color: white; - text-shadow: 0px 0px 3px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; -} -.openerp .navbar .oe_topbar_item { - display: block; - padding: 5px 10px 26px; - line-height: 20px; - height: 20px; - text-decoration: none; - color: #eeeeee; - vertical-align: top; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); - -webkit-transition: all 0.2s ease-out; - -moz-transition: all 0.2s ease-out; - -ms-transition: all 0.2s ease-out; - -o-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; -} -.openerp .navbar .oe_topbar_item:hover { - background: rgba(0, 0, 0, 0.2); - text-shadow: black 0px 0px 3px; - color: white; - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset; -} -.openerp .navbar .oe_topbar_avatar { - width: 24px; - height: 24px; - margin: -2px 2px 0 0; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} -.openerp .navbar .oe_topbar_avatar { - vertical-align: top; -} -.openerp .navbar .oe_dropdown_arrow:after { - border-top: 4px solid white; -} -.openerp .navbar .dropdown_menu { - top: 32px; - background: #333333; - background: rgba(37, 37, 37, 0.9); - border-color: #999999; - border-color: rgba(0, 0, 0, 0.2); - border-style: solid; - border-width: 0 2px 1px; - -moz-border-radius: 0 0 6px 6px; - -webkit-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; -} -.openerp .navbar .dropdown_menu li { - float: none; - padding: 3px 12px; -} -.openerp .navbar .dropdown_menu li a { - color: #eeeeee; -} -.openerp .navbar .dropdown_menu li:hover { - background-color: #212121; - background-image: -webkit-gradient(linear, left top, left bottom, from(#292929), to(#191919)); - background-image: -webkit-linear-gradient(top, #292929, #191919); - background-image: -moz-linear-gradient(top, #292929, #191919); - background-image: -ms-linear-gradient(top, #292929, #191919); - background-image: -o-linear-gradient(top, #292929, #191919); - background-image: linear-gradient(to bottom, #292929, #191919); - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.openerp .navbar .oe_topbar_name { - max-width: 150px; - display: inline-block; - height: 15px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.openerp .nav li a { - padding: 6px 8px 4px 8px; -} -.openerp .oe_user_menu { - float: right; - padding: 0; - margin: 0; -} -.openerp .oe_user_menu li { - list-style-type: none; - float: left; -} -.openerp .oe_user_menu .oe_dropdown_menu { - right: -1px; -} .openerp .oe_leftbar { display: none; width: 220px; @@ -3114,7 +3001,6 @@ top: 0px; } } - .kitten-mode-activated { background-size: cover; background-attachment: fixed; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index b806c32ffc2..f1f948170e5 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -158,6 +158,37 @@ $sheet-padding: 16px #oe_main_menu_navbar.navbar margin-bottom: 0px +.oe_systray + margin-right: 0px !important + +// Notifications {{{ +.oe_notification + z-index: 1600 + +.oe_webclient_timezone_notification + a + color: white + text-decoration: underline + p + margin-top: 1em + dt + font-weight: bold +.oe_timezone_systray + span + margin-top: 1px + background-color: #f6cf3b +// }}} +// Top Menu {{{ +.navbar + .oe_topbar_name + max-width: 150px + display: inline-block + height: 15px // Customize to manage caret when topbar_name is over sized. + text-overflow: ellipsis + white-space: nowrap + overflow: hidden // Customize to bring ellipsis when topbar_name is over sized. +// }}} + .openerp // Global style {{{ padding: 0 @@ -690,23 +721,6 @@ $sheet-padding: 16px border-bottom-right-radius: 8px border-bottom-left-radius: 8px // }}} - // Notifications {{{ - .oe_notification - z-index: 1500 - - .oe_webclient_timezone_notification - a - color: white - text-decoration: underline - p - margin-top: 1em - dt - font-weight: bold - .oe_timezone_systray - span - margin-top: 1px - background-color: #f6cf3b - // }}} // CrashManager {{{ .oe_dialog_warning width: 100% @@ -738,95 +752,6 @@ $sheet-padding: 16px .oe_topbar, .oe_leftbar display: none // }}} - // Top Menu {{{ - .navbar - .oe_topbar_anonymous_login - background-color: #dc5f59 - color: #eeeeee - @include vertical-gradient(#FC8787, #800000) - a - display: block - padding: 5px 10px 7px - line-height: 20px - height: 30px - text-decoration: none - color: white - background: transparent - @include transition(all 0.2s ease-out) - a:hover - background: rgba(0,0,0,0.1) - color: white - text-shadow: 0px 0px 3px rgba(0,0,0,0.2) - @include box-shadow(0 1px 2px rgba(0,0,0,0.2) inset) - .oe_topbar_item - display: block - padding: 5px 10px 26px - line-height: 20px - height: 20px - text-decoration: none - color: #eee - vertical-align: top - text-shadow: 0 1px 1px rgba(0,0,0,0.2) - @include transition(all 0.2s ease-out) - &:hover - background: rgba(0,0,0,0.2) - text-shadow: black 0px 0px 3px - color: white - @include box-shadow(0 1px 2px rgba(0,0,0,0.4) inset) - - .oe_topbar_avatar - width: 24px - height: 24px - margin: -2px 2px 0 0 - @include radius(3px) - .oe_topbar_avatar - vertical-align: top - .oe_dropdown_arrow:after - border-top: 4px solid white - .dropdown_menu - top: 32px - background: #333 - background: rgba(37,37,37,0.9) - border-color: #999 - border-color: rgba(0, 0, 0, 0.2) - border-style: solid - border-width: 0 2px 1px - @include radius(0 0 6px 6px) - @include background-clip() - li - float: none - padding: 3px 12px - a - color: #eee - &:hover - @include vertical-gradient(#292929, #191919) - @include box-shadow(none) - .oe_topbar_name - max-width: 150px - display: inline-block - height: 15px // Customize to manage caret when topbar_name is over sized. - text-overflow: ellipsis - white-space: nowrap - overflow: hidden // Customize to bring ellipsis when topbar_name is over sized. - - // oe menu is the list of the buttons on the left side of the bar. - // So why aren't the buttons oe_topbar_items ? This sad state of affairs - // is a leftover from an uncomplete refactoring when the left and top menu - // were merged. You are welcome to refactor and clean this up - .nav li a - padding: 6px 8px 4px 8px - - .oe_user_menu - float: right - padding: 0 - margin: 0 - li - list-style-type: none - float: left - .oe_dropdown_menu - right: -1px - - // }}} // Webclient.leftbar {{{ .oe_leftbar display: none diff --git a/addons/website_quote/controllers/main.py b/addons/website_quote/controllers/main.py index 522a613bdff..8fab07fcce2 100644 --- a/addons/website_quote/controllers/main.py +++ b/addons/website_quote/controllers/main.py @@ -65,7 +65,7 @@ class sale_quote(http.Controller): if token != order.access_token: return request.website.render('website.404') attachments=sign and [('signature.png', sign.decode('base64'))] or [] - order_obj.signal_order_confirm(request.cr, SUPERUSER_ID, [order_id], context=request.context) + order_obj.signal_workflow(request.cr, SUPERUSER_ID, [order_id], 'order_confirm', context=request.context) message = _('Order signed by %s') % (signer,) self.__message_post(message, order_id, type='comment', subtype='mt_comment', attachments=attachments) return True diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index f4e7144d762..4cf4f5d05f1 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -8,7 +8,7 @@ msgstr "" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" "PO-Revision-Date: 2013-11-24 14:57+0000\n" -"Last-Translator: krnkris \n" +"Last-Translator: krnkris \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -103,7 +103,7 @@ msgstr "Indiai bérszámfejtés" #: help:ir.cron,model:0 msgid "" "Model name on which the method to be called is located, e.g. 'res.partner'." -msgstr "Modell név ahogyan az megnevezve megtalálható, p.l. 'res.partner'." +msgstr "Modell név elnevezése szerint megtalálható, p.l. 'res.partner'." #. module: base #: view:ir.module.module:0 @@ -4000,7 +4000,7 @@ msgstr "Időszakos értékelések, Felbecsülések, Felmérések" #: model:ir.actions.act_window,name:base.ir_property_form #: model:ir.ui.menu,name:base.menu_ir_property_form_all msgid "Configuration Parameters" -msgstr "Konfiguráció Paraméterek" +msgstr "Beállítási Paaraméterek" #. module: base #: constraint:ir.cron:0 @@ -4171,9 +4171,9 @@ msgid "" "separated list of valid field names (optionally followed by asc/desc for the " "direction)" msgstr "" -"Invalid \"order\" specified. A valid \"order\" specification is a comma-" -"separated list of valid field names (optionally followed by asc/desc for the " -"direction)" +"Érvénytelen \"megrendelés\" meghatározás. Az érvénnyes \"megrendelés\" egy vesszővel" +"elválasztott lista érvényes mező nevekkel (választhatóan növekvő/csökkenő sorrendbe " +"állítva)" #. module: base #: model:ir.model,name:base.model_ir_module_module_dependency @@ -4217,7 +4217,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_survey_user msgid "Survey / User" -msgstr "Felmérés / felhasználó" +msgstr "Felmérés / Felhasználó" #. module: base #: view:ir.module.module:0 diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index 7ac8783ddd9..c9195d93d12 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -848,9 +848,9 @@ class ir_actions_server(osv.osv): def run_action_trigger(self, cr, uid, action, eval_context=None, context=None): """ Trigger a workflow signal, depending on the use_relational_model: - - `base`: base_model_pool.signal_(cr, uid, context.get('active_id')) + - `base`: base_model_pool.signal_workflow(cr, uid, context.get('active_id'), ) - `relational`: find the related model and object, using the relational - field, then target_model_pool.signal_(cr, uid, target_id) + field, then target_model_pool.signal_workflow(cr, uid, target_id, ) """ obj_pool = self.pool[action.model_id.model] if action.use_relational_model == 'base': diff --git a/openerp/models.py b/openerp/models.py index 86d702ef582..6e095049dd2 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -3231,8 +3231,16 @@ class BaseModel(object): record._cache.update(record._convert_to_cache(vals)) # store failed values in cache for the records that could not be read - missing = self - self.browse(ids) + fetched = self.browse(ids) + missing = self - fetched if missing: + extras = fetched - self + if extras: + raise AccessError( + _("Database fetch misses ids ({}) and has extra ids ({}), may be caused by a type incoherence in a previous request").format( + ', '.join(map(repr, missing._ids)), + ', '.join(map(repr, extras._ids)), + )) # store an access error exception in existing records exc = AccessError( _('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: %s, Operation: %s)') % \ @@ -4937,19 +4945,6 @@ class BaseModel(object): """ stuff to do right after the registry is built """ pass - def __getattr__(self, name): - if name.startswith('signal_'): - # self.signal_XXX() sends signal XXX to the record's workflow - signal_name = name[7:] - assert signal_name - return (lambda *args, **kwargs: - self.signal_workflow(*args, signal=signal_name, **kwargs)) - - get = getattr(super(BaseModel, self), '__getattr__', None) - if get is None: - raise AttributeError("%r has no attribute %r" % (type(self).__name__, name)) - return get(name) - def _patch_method(self, name, method): """ Monkey-patch a method for all instances of this model. This replaces the method called `name` by `method` in `self`'s class. diff --git a/openerp/release.py b/openerp/release.py index 1a9c863660c..ebc02655cc2 100644 --- a/openerp/release.py +++ b/openerp/release.py @@ -30,7 +30,7 @@ RELEASE_LEVELS_DISPLAY = {ALPHA: ALPHA, # properly comparable using normal operarors, for example: # (6,1,0,'beta',0) < (6,1,0,'candidate',1) < (6,1,0,'candidate',2) # (6,1,0,'candidate',2) < (6,1,0,'final',0) < (6,1,2,'final',0) -version_info = (8, 0, 0, ALPHA, 1) +version_info = (9, 0, 0, ALPHA, 1) version = '.'.join(map(str, version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '') series = serie = major_version = '.'.join(map(str, version_info[:2]))