Odoo Россия http://www.odoo-russia.ru ru [email protected] (http://www.odoo-russia.ru) [email protected] (http://www.odoo-russia.ru) http://www.odoo-russia.ru http://www.odoo-russia.ru Runbot - Continious Integration сервер для тестирования модулей к Odoo http://www.odoo-russia.ru/forum/topic/76/ http://www.odoo-russia.ru/forum/topic/76/ dskarataev Wed, 20 Aug 2014 09:18:24 +0400 Профессиональные вопросы по разработке модулей Недокументированные возможности в OpenERP http://www.odoo-russia.ru/forum/topic/44/ http://www.odoo-russia.ru/forum/topic/44/ neobht
Вот одна из них:
во VIEW для many2one поля сделать внешний вид как у selection, но при этом не потерять функционала many2one:

<field name="type_doc_id" options="{'no_open':true}"/>
]]>
Mon, 03 Mar 2014 18:16:42 +0400 Профессиональные вопросы по разработке модулей
Выполнение JavaScript в BackEnd после загрузки формы http://www.odoo-russia.ru/forum/topic/632/ http://www.odoo-russia.ru/forum/topic/632/ aladkoi

 var FormRenderer = require('web.FormRenderer');
FormRenderer.include({
events: {  /// при необходимости вешаем на элемент формы обработчик нажатия 
        'click .мой элемент': 'my_click',
    },
my_click: function() {
},
 _renderView: function () {
  var self = this;
  return this._super().then(function () {
            if (self.state.model=='ваша модель'){
                Выполняем java скрипт;
            }
        });
 },
});

Зачем это надо, часть сторонних API часто требуют загрузки своих скриптов только после успешной загрузки в браузер необходимых элементов формы. В частности — API от google maps.
Читать дальше]]>
Mon, 05 Feb 2018 16:14:24 +0300 Профессиональные вопросы по разработке модулей
ATOL + ODOO http://www.odoo-russia.ru/forum/topic/624/ http://www.odoo-russia.ru/forum/topic/624/ IRIP Sun, 28 Jan 2018 13:09:29 +0300 Профессиональные вопросы по разработке модулей Реализация сервиса Google Maps Embed http://www.odoo-russia.ru/forum/topic/626/ http://www.odoo-russia.ru/forum/topic/626/ aladkoi doc.open-odoo.ru/developer/11.0/ru/howtos/web.html полностью не раскрыта тема реализации данного сервиса.
В Odoo 11 существует модуль Partners Geolocation, где заложены базовый методы для получения координат точки на карте по введенному адресу в модели res.partner.
Перед началом работы с данным сервисом необходимо зарегистрировать на сервисе google и создать ключ согласно developers.google.com/maps/documentation/embed/guide?hl=ru. Данный ключ необходимо сохранить в Настройки -> Общие настройки -> Веб-сайт -> Google Картa -> Ключ API. Для получения в backend отображения карты google необходимо в каталоге проект/static/src/xml/ создать файл google_map.xml c содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="WidgetCoordinates" >
     <iframe width="600" height="450" t-attf-src="https://www.google.com/maps/embed/v1/view?key={{googlekey}}&center={{latitude}},{{longitude}}&zoom=18&language=ru">
      </iframe>
</t>
</templates>

и подключить его в __manifest__.py

  'qweb': ['static/src/xml/*.xml',],

Для подключения данного файла и передачи ему параметров координат пишем web.Widget:

odoo.define('проект.goole', function (require) {
 var rpc=require('web.rpc');
 var Widget= require('web.Widget');
 var widgetRegistry = require('web.widget_registry');
var GoogleCoordinates = Widget.extend(FieldManagerMixin, {
 init: function (parent, model, state) {
        this._super(parent); 
        FieldManagerMixin.init.call(this);
        this.partner_latitude=model.data['partner_latitude'];     // из формы backend необходимо сохранить в widget координаты точки
        this.partner_longitude=model.data['partner_longitude'];
 },
start: function () {
     var self=this;
              rpc.query({    /// получаем ключ google
              model:'ir.config_parameter',
              method:'get_param',
              args:['google_maps_api_key'],
              })
              .then(function (result) {
                self.googlekey=result;
                self.display_map();  // рисуем карту
              });
},
   display_map: function() {   
    this.$el.html(qweb.render("WidgetCoordinates", {   /// подключаем и загружаем в widget шаблон WidgetCoordinates из файла  google_map.xml
         "latitude": this.partner_latitude || 0,
         "longitude": this.partner_longitude || 0,
         "googlekey":this.googlekey || '',
        }
  ));
});
widgetRegistry.add('GoogleCoordinates', GoogleCoordinates);  // регистрируем виджет

Подключаем виджет GoogleCoordinates в шаблон backend:

    ................
      <page string="Карта Google">
          <widget name="GoogleCoordinates"/>
      </page>
    </notebook>

Читать дальше]]>
Tue, 30 Jan 2018 10:05:11 +0300 Профессиональные вопросы по разработке модулей
удалить http://www.odoo-russia.ru/forum/topic/617/ http://www.odoo-russia.ru/forum/topic/617/ Jackson Mon, 15 Jan 2018 14:33:24 +0300 Профессиональные вопросы по разработке модулей Odoo 10 One2many выводить свежие данные из последней связанной строки http://www.odoo-russia.ru/forum/topic/606/ http://www.odoo-russia.ru/forum/topic/606/ Jackson
Почему с полем One2many не проходит трюк c автозаполнением полей как с полем Many2one? Что я делаю не так?
Обрыскал интернет и ничего не нашел. Пробовал разные вариации serch([]), browse().

Хотел, чтоб крайняя запись в планинге замеров (связанной моделе по x_kzevent_ids ) по onchange автоматически подставлялись значения этой модели по последней записи.


x_kzevent_ids = fields.One2many('kpi.kzevent', 'opportunity_id', string='Замеры', index=True, track_visibility='onchange')


        #Подхватить значения модели
        def _onchange_x_kzevent_ids_values(self, x_kzevent_ids):
                """ returns the new values when x_kzevent_ids has changed """
                if x_kzevent_ids:
                        kzevent = self.env['kpi.kzevent'].browse(x_kzevent_ids)

                        return {
                                'x_kzevent_start': kzevent.start,
                                'x_kzevent_stop': kzevent.stop,
                                'x_who_kz': kzevent.name,
                                'x_kzevent_status': kzevent.status,
                                'x_prim_kz': kzevent.prim_kz,
                                'x_ppevent_status': kzevent.ppevent_status,
                        }
                return {}

        #Вставить значения согласно выбранной записи
        <ls user="api" />.onchange('x_kzevent_ids')
        def _onchange_x_kzevent_ids(self):
                values = self._onchange_x_kzevent_ids_values(self.x_kzevent_ids.ids if self.x_kzevent_ids else False)
                self.update(values)


Сразу оговорюсь, когда использую просто related поля, то они один раз подхватывают с первой записи из One2many значения. Все последующие прикрепленные записи в One2many не обновляют значения related полей.
Читать дальше]]>
Wed, 27 Dec 2017 12:39:13 +0300 Профессиональные вопросы по разработке модулей
Фильтр по умолчанию http://www.odoo-russia.ru/forum/topic/557/ http://www.odoo-russia.ru/forum/topic/557/ darkink

<?xml version="1.0" encoding="utf-8"?> 
<openerp>
  <data>
	
		<record id="view_task_search_form" model="ir.ui.view">
      <field name="name">project.task.work.tree</field>
      <field name="model">project.task.work</field>
			<field name="context" eval="{'search_default_filter_mytasks':1}"/>	
      <field name="arch" type="xml">
        <search string="Tasks">
          <filter string="Мои" name="mytasks" domain="[('user_id','=',uid)]"/>				
        </search>
      </field>
    </record>
		
		<record id="view_task_work_tree" model="ir.ui.view">
      <field name="name">project.task.work.tree</field>
      <field name="model">project.task.work</field>
      <field name="inherit_id" ref="project.view_task_work_tree"/>
			<field name="context" eval="{'search_default_filter_mytasks':1}"/>	
      <field name="arch" type="xml">
        <field name="hours" position="before">
          <field name="project_name_mod"/>
          <field name="task_name_mod"/>
        </field>
      </field>
			
    </record>
  </data>
</openerp>


Как мне сделать фильтр выбранным по умолчанию?
Читать дальше]]>
Mon, 19 Jun 2017 08:47:52 +0300 Профессиональные вопросы по разработке модулей
Модуль с отправкой писем http://www.odoo-russia.ru/forum/topic/582/ http://www.odoo-russia.ru/forum/topic/582/ darkink

# -*- coding: utf-8 -*-

from odoo import http

class callback(http.Controller):
	<ls user="http" />.route('/callback/', auth='public')
	def index(self, **kw):
		return "Hello, world"


На эту страницу отправляется запрос через аякс, с номером телефона.
Как мне отправить этот номер телефона на почту себе (которая не в odoo, а вообще любую)?

может где описание класса есть и как он работает?
Читать дальше]]>
Mon, 28 Aug 2017 11:41:02 +0300 Профессиональные вопросы по разработке модулей
Вопрос по уровням доступа http://www.odoo-russia.ru/forum/topic/566/ http://www.odoo-russia.ru/forum/topic/566/ targ3t Столкнулся со следующей проблемой. Есть модель заказа, в которой есть поле many2many на продукты. Добавление продуктов в заказ осуществляется на форме заказа через widget=«many2many».
Так вот, если пользователю не давать права на удаление продуктов, то он не может на форме заказа удалять продукты из списка many2many, может только их туда добавлять (у пользователя полные права на модель Заказа и права только на чтение модели Продуктов).
В чем может проблема? Идет редактирование не самих продуктов, а только связи на них.
Odoo версии 9
Читать дальше]]>
Sun, 02 Jul 2017 13:57:58 +0300 Профессиональные вопросы по разработке модулей
Кодировка банковской выписки http://www.odoo-russia.ru/forum/topic/547/ http://www.odoo-russia.ru/forum/topic/547/ darkink Делаю импорт банковских выписок на odoo 8
Есть модуль account_bank_statement_import
Делаю дополнительный модуль под нужный мне формат выписки. Все работает нормально, за исключением того, что кодировка русских символов отображается как на рисунке

Все мои попытки перекодировать данные не увенчались успехом.
Если сменить кодировку самого файла выписки на utf-8, то все нормально отображается, если кодировку оставить как есть, то вот такая вот беда возникает. Кто может подсказать, что мне делать и как решить проблему. Наверняка же простое решение…
Читать дальше]]>
Tue, 23 May 2017 10:59:52 +0300 Профессиональные вопросы по разработке модулей
выборка по вычисляемому и не записываемому в базу полю http://www.odoo-russia.ru/forum/topic/504/ http://www.odoo-russia.ru/forum/topic/504/ lobanovjohny Есть вычисляемое поле, не записываемое в базу. К примеру со значением 1 и 0, или True и False.
Можно сделать выборку в новом API только тех записей, у которых значение этого вычисляемого поля равно 1 и показать только их?

если добавляю метод search в вычисляемое поле и ставлю Record rule [('myfield','=','1')], то при 10 тысячах записей odoo просто делает вычисления и никаких результатов не приводит. Делает очень долго. Как добавить быструю выборку по таким условиям? Спасибо
Читать дальше]]>
Wed, 01 Mar 2017 10:39:23 +0300 Профессиональные вопросы по разработке модулей
Menu badge http://www.odoo-russia.ru/forum/topic/538/ http://www.odoo-russia.ru/forum/topic/538/ slait Прошу помощи, никак не могу разобраться с badge'ами.

Нужно прикрутить в меню цифру, как, например в сообщениях (кол-во непрочитанных сообщений).

В .py добавил
_inherit = ['ir.needaction_mixin']


	def _needaction_count(self, cr, uid, domain=None, context=None):
	return 20

Но не знаю, как теперь это прикрутить к xml.]]>
Fri, 05 May 2017 11:38:15 +0300 Профессиональные вопросы по разработке модулей
Изменения в описании видов и интерфейса odoo 1 http://www.odoo-russia.ru/forum/topic/521/ http://www.odoo-russia.ru/forum/topic/521/ POBOT Что изменилось в описании видов (views), описании действий (window actions)
У кого есть какие знания, кто какие источники может подсказать?
Вот что удалось найти, маловато, но надо с чего-то начать: github.com/m3dbedb/odoo/wiki
По XML может кто подсказать:
Нужно унаследовать вид и добавить/изменить поля наследуемого вида. Пока не очень получается. Есть ли инструмент автоматизации, которому можно дать исходный и изменённый XML, а он бы создал код изменения вида:
<field name="arch" type="xml">
                <field name="name" position="after">
                    <field name="stage_id" string="Stage"/>
                </field>
</field>

Читать дальше]]>
Thu, 06 Apr 2017 17:12:04 +0300 Профессиональные вопросы по разработке модулей
Переход на пользователя из kanban http://www.odoo-russia.ru/forum/topic/520/ http://www.odoo-russia.ru/forum/topic/520/ slait Появилась такая необходимость. При клике на аватарку члена команды проекта, виде канбан, должна открываться форма пользователя, на чью аватарку кликнули.
Знаю, где нужно искать. Это project_view.xml. Но как осуществить переход, не знаю.
<div class="oe_kanban_project_avatars">
    <t t-foreach="record.members.raw_value.slice(0,11)" t-as="member">
        <img t-att-src="kanban_image('res.users', 'image_small', member)" t-att-data-member_id="member"/>
    </t>
</div>


Прошу помочь.
Заранее спасибо!
Читать дальше]]>
Thu, 06 Apr 2017 14:30:18 +0300 Профессиональные вопросы по разработке модулей
Копирование http://www.odoo-russia.ru/forum/topic/518/ http://www.odoo-russia.ru/forum/topic/518/ Grf Sun, 02 Apr 2017 22:51:26 +0300 Профессиональные вопросы по разработке модулей Нужен совет по разработке модуля "Договоры с заказчиком" http://www.odoo-russia.ru/forum/topic/517/ http://www.odoo-russia.ru/forum/topic/517/ POBOT
Читать дальше]]>
Wed, 29 Mar 2017 16:50:26 +0300 Профессиональные вопросы по разработке модулей
Record Rule на показ записи только нужной группе http://www.odoo-russia.ru/forum/topic/516/ http://www.odoo-russia.ru/forum/topic/516/ lobanovjohny Продажи / Оператор. ID группы 10.

Делаю так:

[(10,'in',[g.id for g in user.groups_id])]

ругается
TypeError: unhashable type: 'list'

[('10','in',[g.id for g in user.groups_id])]

ругается, что такого поля нет]]>
Fri, 24 Mar 2017 17:17:10 +0300 Профессиональные вопросы по разработке модулей
Смайлы-иконки в текстовых полях вместо :) ;) :-( :' http://www.odoo-russia.ru/forum/topic/515/ http://www.odoo-russia.ru/forum/topic/515/ AlexKom Помогите реализовать смайлики в некоторых текстовых полях вместо их текстовых представлений, аналогично смайлам в чате.
Как я понял что мне нужно сделать:
1. сделать qweb xml

<templates>
  <t t-extend="crm.phone.description"> 
    <t t-jquery="...>
        тут установить подписки на событие "текст_описания_загружен_в_поле",
        и по этому событию загружать мою функцию из "конвертер_текста_в_смайлы.js"
    </t>
  </t>
</templates>

2. написать файл конвертер_текста_в_смайлы.js
3. загружать файл «конвертер_текста_в_смайлы.js» при загрузке оду или при загрузке карточки crm.phone(ну или карточки модели в которой в заданном поле нужно преобразовать в смайлы нужные текстовые представления смайлов)

сам текст js я то напишу(по примеру в модуле mail). Тут мне помощь (пока)не нужна.
а вот с qweb я как-то не очень разобрался… нужна помощь.

и еще проблема с подпиской на событие. Нужно поймать момент когда форма создана, данные в нее уже загружены и вот «после загрузки данных в поле» — запустить мою функцию-конвертер. Я знаю только в js «onload». Но при «onload» данные получены, но еще не загружены в поле… вобщем тут я сильно плаваю, как правильно это сделать?
Читать дальше]]>
Mon, 20 Mar 2017 15:51:00 +0300 Профессиональные вопросы по разработке модулей
field.Html не работает в ячейке tree view odoo 8 http://www.odoo-russia.ru/forum/topic/509/ http://www.odoo-russia.ru/forum/topic/509/ lobanovjohny

callrecordlink = fields.Html('Ссылка на разговор')


в базе к примеру хранится в нём такая информация:

<a href="http://localhost">Ссылка</a>


в дерево выводится как есть, т.е. текстом
<a href="http://localhost">Ссылка</a>
, а не Ссылка.

Пытался установить три виджета и модифицировать под них ссылку по описанию в модулях:
trp_web_treeview_html_widget
web_list_html_widget
web_url


прописывал их в атрибуте widget в xml, переустанавливал модуль, но ни один не заработал — ссылка не появилась в tree view.

ps: вообще, в модуле предполагается хранить аудиозаписи и ставить на них ссылки в виде кода html5, типа:

<audio src="/asterisk_module/static/src/dialogs/test.mp3"></audio>

но не понятно, как это сделать.
Читать дальше]]>
Tue, 14 Mar 2017 15:36:51 +0300 Профессиональные вопросы по разработке модулей