Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Estate Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
    • Meet an advisor
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Get a demo
  • Pricing
  • Help

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Accounting
  • Inventory
  • PoS
  • Project
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Tags (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Tags (View all)
odoo accounting v14 pos v15
About this forum
Help

Invalid XML for View Architecture

Subscribe

Get notified when there's activity on this post

This question has been flagged
webclientValidationError
3 Replies
11436 Views
Avatar
Husam M Alfarra

Am trying to install a module and am getting error message "
"ValidationError

Error occurred while validating the field(s) arch: Invalid XML for View Architecture!"
I reviewed my view.xml file but i could not rectify the error any help please

_______XML FILE ___________________________________________________________

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
    <!--============================================================
                                Reservation
        ============================================================ -->
        
    <record model="ir.ui.view" id="view_hotel_reservation_form">
            <field name="name">hotel.reservation.form</field>
            <field name="model">hotel.reservation</field>
            <field name="arch" type="xml">
                <form string=" Reservation" version="7.0">
                <notebook>
                    <page string="Reservation">
                        <field name="reservation_no" colspan="1"/>
                        <field name="date_order" select="1"/>
                        <field name="shop_id" select="2"/>
                        <field name="pricelist_id"/>
                        <field name="partner_id" on_change="onchange_partner_id(partner_id)" select="1"/>
                        <field name="partner_order_id" domain="[('partner_id','=',partner_id)]"/>
                        <field name="partner_invoice_id" domain="[('partner_id','=',partner_id)]"/>
                        <field name="partner_shipping_id" domain="[('partner_id','=',partner_id)]"/>
                        <field name="checkin" colspan="1"/>
                        <field name="checkout" on_change="on_change_checkout(checkin,checkout)"/>
                        <field name="adults"/>
                        <field name="childs"/>
                        <field name="dummy" invisible="True"/>
                        <field name="reservation_line" colspan="4" nolabel="1">
                            <form string="Reservation Line" >
                                <separator string="Room Type"/>
                                <field name="categ_id" select="1" colspan="4" nolabel="1"/>
                                <newline/>
                                <separator string="Select Room "/>
                                <field name="reserve" colspan="4" nolabel="1"/>
                            </form>
                            <tree string="Reservation Line" version="7.0">
                                <field name="categ_id" select="1"/>
                                <field name="reserve" colspan="4" string="No Of Rooms"/>
                            </tree>
                        </field>
                        <group colspan="4">
                            <field name="state"/>
                            <button name="confirm" string="Confirm" states="draft" icon="gtk-ok"/>
                            <button name="done" string="Create Folio" states="confirm" icon="gtk-go-forward"/>
                        </group>
                    </page>
                </notebook>
                </form>
            </field>
        </record>
        <record model="ir.ui.view" id="view_hotel_reservation_tree">
            <field name="name">hotel.reservation.tree</field>
            <field name="model">hotel.reservation</field>
            <field name="arch" type="xml">
                <tree string="Reservation" colors="blue:state=='draft' and checkin==current_date;red:state=='confirm' and checkout==current_date">
                    <field name="reservation_no"/>
                    <field name="partner_id" select="1"/>
                    <field name="checkin"/>
                    <field name="checkout"/>
                    <field name="state"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="view_hotel_reservation_search">
            <field name="name">hotel.reservation.search</field>
            <field name="model">hotel.reservation</field>
            <field name="arch" type="xml">
                <search string="Reservation" version="7.0">
                    <group>
                        <filter icon="terp-document-new" domain="[('state','=','draft')]" string="Draft"/>
                        <filter icon="terp-camera_test" domain="[('state','=','confirm')]" string="Confirm"/>
                        <filter icon="terp-dialog-close" domain="[('state','=','cancel')]" string="Cancel"/>
                        <filter icon="terp-check" domain="[('state','=','done')]" string="Done"/>
                    </group>
                    <field name="reservation_no"/>
                    <field name="partner_id" select="1"/>
                    <field name="checkin"/>
                    <field name="checkout"/>
                    <field name="state"/>
                    <newline/>
                    <group expand="0" string="Group By...">
                        <filter name="partner_id" string="Guest Name" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
                    </group>
                </search>
            </field>
        </record>
        
        
        <record model="ir.ui.view" id="view_hotel_reservation_graph">
            <field name="name">hotel.reservation.graph</field>
            <field name="model">hotel.reservation</field>
            <field name="arch" type="xml">
                <graph string="Reservation" type="bar">        
                    <field name="state"/>
                    <field name="reservation_no"/>
                </graph>
            </field>
        </record>
        
        
        
        <record model="ir.actions.act_window" id="open_hotel_reservation_form_tree">
            <field name="name">Reservation</field>
            <field name="res_model">hotel.reservation</field>
            <field name="view_type">form</field>
            <field name="view_mode">form,tree</field>
        </record>
        
                  
        <record model="ir.actions.act_window" id="action_hotel_reservation_tree_all">
            <field name="name">All Reservation</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">hotel.reservation</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
        </record>
        <menuitem  id="menu_hotel_reservation" name="Reservations" parent="hotel.hotel_management_menu" sequence="1"/>
        
        <menuitem name="All Reservations"
                  id="menu_action_hotel_reservation_tree_all"
                  action="action_hotel_reservation_tree_all"
                  parent="menu_hotel_reservation"
                  sequence="3"/>
                  
        <menuitem name="New Reservation"
                  id="menu_open_hotel_reservation_form_tree"
                  action="open_hotel_reservation_form_tree"
                  sequence="20"
                  parent="menu_hotel_reservation"/>
        
        <record model="ir.ui.view" id="hotel_calendar_view">
            <field name="name">Room Reservation</field>
            <field name="model">hotel.reservation</field>
            <field name="priority" eval="2"/>
            <field name="arch" type="xml">
               <calendar string="Current Reservation" date_start="checkin" date_stop= "dummy" color="state" >
                    <field name="partner_id"/>
               </calendar>
            </field>
        </record>
        
                    
        
    </data>
</openerp>

 

 

0
Avatar
Discard
Med Said BARA

1- Restart the server 2- Look inside you openerp-server.log file for more details on the error

Avatar
Med Said BARA
Best Answer

Confusion !

It seems that the error is related to hotel_reservation_wizard.xml and not to the first xml file posted.

Post the content of the hotel_reservation_wizard.xml file and the content of the python file where date_start and date_end are defined

 

SUMMARY (after comments):

According to your log, the error is related to hotel_reservation_wizard.xml file, and in this file there is at least two (2) fields " date_start and date_end", and those fields must be defined somewhere in a python file (maybe: hotel_reservation_wizard.py), before than you can use them in an .xml file

Under your folder module (hotel !!!) there is a first __init__.py file (beside the __openerp__.py file), in this one import the .py files of this folder (but not the __openerp__.py one) and also import the subfolders ( like: import wizard). After that in each subfolder if there is an other __init__.py file, in this one, just import the .py files of this subfolder.

1
Avatar
Discard
Avatar
ABU K
Best Answer

Please add your error log file here and python file.......
 

0
Avatar
Discard
Avatar
Husam M Alfarra
Author Best Answer

First thanks  Libu & Med for responding

__________________________Error  log fro IDE________________________

/usr/bin/python2.7 /home/husam/PycharmProjects/openerp/openerp-server
2014-08-09 15:32:03,774 23692 INFO ? openerp: OpenERP version 7.0-20131220-002431
2014-08-09 15:32:03,775 23692 INFO ? openerp: addons paths: /home/husam/PycharmProjects/openerp/openerp/addons
2014-08-09 15:32:03,775 23692 INFO ? openerp: database hostname: localhost
2014-08-09 15:32:03,775 23692 INFO ? openerp: database port: 5432
2014-08-09 15:32:03,775 23692 INFO ? openerp: database user: husam
2014-08-09 15:32:08,989 23692 INFO ? openerp.addons.google_docs.google_docs: GData lib version `%s GData-Python/2.0.17` detected
2014-08-09 15:32:15,009 23692 INFO ? openerp.service.wsgi_server: HTTP service (werkzeug) running on 0.0.0.0:8068
2014-08-09 15:32:15,010 23692 INFO ? openerp: OpenERP server is running, waiting for connections...
2014-08-09 15:32:15,914 23692 INFO demo1 openerp.modules.loading: loading 1 modules...
2014-08-09 15:32:16,287 23692 INFO demo1 openerp.modules.loading: loading 28 modules...
2014-08-09 15:32:16,912 23692 INFO demo1 openerp.modules.loading: Modules loaded.
2014-08-09 15:32:16,972 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:16] "GET / HTTP/1.1" 200 -
2014-08-09 15:32:17,437 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:17] "GET /web/static/src/css/full.css HTTP/1.1" 200 -
2014-08-09 15:32:18,364 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:18] "GET /web/webclient/css?db=demo1 HTTP/1.1" 200 -
2014-08-09 15:32:21,245 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:21] "GET /web/webclient/js?db=demo1 HTTP/1.1" 200 -
2014-08-09 15:32:22,931 23692 INFO demo1 openerp.service.web_services: successful login from 'admin' using database 'demo1'
2014-08-09 15:32:22,974 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:22] "POST /web/session/get_session_info HTTP/1.1" 200 -
2014-08-09 15:32:23,026 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:23] "POST /web/webclient/qweblist HTTP/1.1" 200 -
2014-08-09 15:32:23,614 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:23] "POST /web/proxy/load HTTP/1.1" 200 -
2014-08-09 15:32:23,792 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:23] "POST /web/session/modules HTTP/1.1" 200 -
2014-08-09 15:32:23,924 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:23] "POST /web/webclient/translations HTTP/1.1" 200 -
2014-08-09 15:32:23,940 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:23] "GET /web/static/lib/datejs/globalization/en-US.js HTTP/1.1" 200 -
2014-08-09 15:32:24,304 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:24,379 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "GET /web/static/src/img/user_menu_avatar.png HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 47345)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
    self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 704, in finish
    self.wfile.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------
2014-08-09 15:32:24,415 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:24,419 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:24,441 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "GET /web/binary/company_logo?session_id=696b11d8ce4748069ac75b31df438ac3 HTTP/1.1" 200 -
2014-08-09 15:32:24,485 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/action/load HTTP/1.1" 200 -
2014-08-09 15:32:24,507 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "GET /web/binary/image?model=res.users&field=image_small&id=1&session_id=696b11d8ce4748069ac75b31df438ac3 HTTP/1.1" 200 -
2014-08-09 15:32:24,877 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:24,905 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:24,969 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:24] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:25,367 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "GET /web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png HTTP/1.1" 200 -
2014-08-09 15:32:25,368 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "GET /web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png HTTP/1.1" 200 -
2014-08-09 15:32:25,378 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "GET /web/static/src/img/search_reset.gif HTTP/1.1" 200 -
2014-08-09 15:32:25,443 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "POST /web/menu/load HTTP/1.1" 200 -
2014-08-09 15:32:25,463 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:25,491 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:25,502 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:25] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:26,152 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:26] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:26,280 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:26] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:26,298 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:26] "POST /web/menu/load_needaction HTTP/1.1" 200 -
2014-08-09 15:32:27,576 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /mail/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:27,633 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /base/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:27,635 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /account_voucher/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:27,636 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /sale/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:27,722 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /edi/static/src/img/knowledge.png HTTP/1.1" 200 -
2014-08-09 15:32:27,827 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /hotel/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:27,830 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /portal/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:27,941 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:27] "GET /web/static/src/img/form_sheetbg.png HTTP/1.1" 200 -
2014-08-09 15:32:28,278 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:28] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:28,798 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:28] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:28,871 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:28] "GET /usr/share/docutils/writers/html4css1/html4css1.css HTTP/1.1" 404 -
2014-08-09 15:32:28,879 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:28] "GET /web/static/src/img/throbber.gif HTTP/1.1" 200 -
2014-08-09 15:32:29,063 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:29] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:30,737 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:30] "GET /web/binary/image?model=ir.module.module&id=102&field=icon_image&t=1407598348391&session_id=696b11d8ce4748069ac75b31df438ac3 HTTP/1.1" 200 -
2014-08-09 15:32:38,994 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:38] "POST /web/action/load HTTP/1.1" 200 -
2014-08-09 15:32:39,507 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:39] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:39,534 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:39] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:39,632 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:39] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:39,639 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:39] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:39,671 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:39] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:40,079 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:40] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:43,110 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:43] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:43,942 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:43] "GET /project/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:43,957 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:43] "GET /project_issue/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:43,968 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:43] "GET /account_accountant/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:43,998 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:43] "GET /mrp/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,008 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /crm/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,030 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /purchase/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,042 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /openeducat_erp/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,064 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,069 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr_timesheet_sheet/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,084 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /point_of_sale/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,118 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr_expense/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,130 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /note/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,165 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /account_asset/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,178 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /stock/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,194 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr_payroll/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,233 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr_holidays/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,247 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr_recruitment/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:44,261 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:44] "GET /hr_evaluation/static/src/img/icon.png HTTP/1.1" 200 -
2014-08-09 15:32:46,462 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:46] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:46,825 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:46] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:47,112 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:47] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:47,452 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:47] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:48,693 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:48] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:49,209 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:49] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:51,111 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:51] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:51,717 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:51] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:52,150 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:52] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:52,255 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:52] "GET /usr/share/docutils/writers/html4css1/html4css1.css HTTP/1.1" 404 -
2014-08-09 15:32:52,260 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:52] "GET /web/static/src/img/placeholder.png HTTP/1.1" 200 -
2014-08-09 15:32:52,535 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:52] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:52,979 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:52] "POST /web/dataset/call_button HTTP/1.1" 200 -
2014-08-09 15:32:53,223 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:53] "POST /web/menu/load_needaction HTTP/1.1" 200 -
2014-08-09 15:32:53,245 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:53,524 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:53] "POST /web/dataset/call_kw HTTP/1.1" 200 -
2014-08-09 15:32:53,691 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:53] "POST /web/dataset/search_read HTTP/1.1" 200 -
2014-08-09 15:32:57,627 23692 INFO demo1 openerp.modules.loading: loading 1 modules...
2014-08-09 15:32:57,719 23692 INFO demo1 openerp.modules.loading: loading 28 modules...
2014-08-09 15:32:58,104 23692 INFO demo1 openerp.modules.loading: loading 29 modules...
2014-08-09 15:32:58,151 23692 INFO demo1 openerp.modules.module: module hotel_reservation: creating or updating database tables
2014-08-09 15:32:58,301 23692 INFO demo1 openerp.modules.loading: module hotel_reservation: loading hotel_reservation_view.xml
2014-08-09 15:32:58,770 23692 INFO demo1 openerp.modules.loading: module hotel_reservation: loading hotel_reservation_sequence.xml
2014-08-09 15:32:58,896 23692 INFO demo1 openerp.modules.loading: module hotel_reservation: loading hotel_reservation_workflow.xml
2014-08-09 15:32:58,976 23692 INFO demo1 openerp.modules.loading: module hotel_reservation: loading wizard/hotel_reservation_wizard.xml
2014-08-09 15:32:59,002 23692 WARNING demo1 openerp.addons.base.ir.ir_ui_view: Setting the `type` field is deprecated in the `ir.ui.view` model.
2014-08-09 15:32:59,012 23692 ERROR demo1 openerp.addons.base.ir.ir_ui_view: Can't render view  for model: hotel.reservation.wizard
Traceback (most recent call last):
  File "/home/husam/PycharmProjects/openerp/openerp/addons/base/ir/ir_ui_view.py", line 126, in _check_render_view
    fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context)
AttributeError: 'NoneType' object has no attribute 'fields_view_get'
2014-08-09 15:32:59,060 23692 ERROR demo1 openerp.tools.convert: Parse error in /home/husam/PycharmProjects/openerp/openerp/addons/hotel_reservation/wizard/hotel_reservation_wizard.xml:5:
<record model="ir.ui.view" id="hotel_reservation_wizard_form_view">
            <field name="name">hotel.reservation.wizard.form</field>
            <field name="model">hotel.reservation.wizard</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="Reservation List">
                 <group col="8">
                    <field name="date_start" colspan="4"/>
                    <field name="date_end" colspan="4"/>
                 </group>
                    <newline/>
                    <separator colspan="4"/>
                    <group col="8">
                        <button special="cancel" string="Cancel" icon="gtk-cancel"/>
                        <button name="report_reservation_detail" type="object" string="Reservation List" icon="gtk-justify-fill"/>
                        <button name="report_checkin_detail" string="CheckIn List" type="object" icon="gtk-jump-to"/>
                        <button name="report_checkout_detail" string="CheckOut List" type="object" icon="gtk-redo"/>
                        <button name="report_maxroom_detail" string="Room Used Maximum" type="object" icon="terp-stock_symbol-selection"/>
                    </group>
                </form>
            </field>
        </record>
Traceback (most recent call last):
  File "/home/husam/PycharmProjects/openerp/openerp/tools/convert.py", line 847, in parse
    self._tags[rec.tag](self.cr, rec, n)
  File "/home/husam/PycharmProjects/openerp/openerp/tools/convert.py", line 814, in _tag_record
    id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/home/husam/PycharmProjects/openerp/openerp/addons/base/ir/ir_model.py", line 967, in _update
    res_id = model_obj.create(cr, uid, values, context=context)
  File "/home/husam/PycharmProjects/openerp/openerp/addons/base/ir/ir_ui_view.py", line 103, in create
    return super(view, self).create(cr, uid, values, context)
  File "/home/husam/PycharmProjects/openerp/openerp/osv/orm.py", line 4490, in create
    self._validate(cr, user, [id_new], context)
  File "/home/husam/PycharmProjects/openerp/openerp/osv/orm.py", line 1559, in _validate
    raise except_orm('ValidateError', '\n'.join(error_msgs))
except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')
2014-08-09 15:32:59,124 23692 ERROR demo1 openerp.netsvc: ValidateError
Error occurred while validating the field(s) arch: Invalid XML for View Architecture!
Traceback (most recent call last):
  File "/home/husam/PycharmProjects/openerp/openerp/netsvc.py", line 292, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/home/husam/PycharmProjects/openerp/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/home/husam/PycharmProjects/openerp/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/home/husam/PycharmProjects/openerp/openerp/osv/osv.py", line 144, in wrapper
    raise except_osv(inst.name, inst.value)
except_osv: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')
2014-08-09 15:32:59,190 23692 INFO demo1 werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:59] "POST /web/dataset/call_button HTTP/1.1" 200 -
2014-08-09 15:32:59,536 23692 INFO ? werkzeug: 127.0.0.1 - - [09/Aug/2014 15:32:59] "GET /web/static/src/img/warning.png HTTP/1.1" 200 -

 

_____________python file ___________________________

 ##############################################################################

from osv import fields
from osv import osv
import time
from mx import DateTime
import datetime
import pooler
from tools import config


class hotel_reservation(osv.osv):
    _name = "hotel.reservation"
    _rec_name = "reservation_no"
    _description = "Reservation"
    _columns = {
                
                'reservation_no': fields.char('Reservation No', size=64, required=True, select=True),
                'date_order':fields.datetime('Date Ordered', required=True, readonly=True, states={'draft':[('readonly',False)]}),
                'shop_id':fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft':[('readonly',False)]}),      
                'partner_id':fields.many2one('res.partner', 'Guest Name', required=True,readonly=True, states={'draft':[('readonly',False)]}),
                'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True,readonly=True, states={'draft':[('readonly',False)]}),
                'partner_invoice_id':fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft':[('readonly',False)]}),
                'partner_order_id':fields.many2one('res.partner', 'Ordering Contact', readonly=True, required=True, states={'draft':[('readonly',False)]}, help="The name and address of the contact that requested the order or quotation."),
                'partner_shipping_id':fields.many2one('res.partner', 'Shipping Address', readonly=True, required=True, states={'draft':[('readonly',False)]}),
                'checkin': fields.datetime('Expected-Date-Arrival',required=True,readonly=True, states={'draft':[('readonly',False)]}),
                'checkout': fields.datetime('Expected-Date-Departure',required=True, readonly=True, states={'draft':[('readonly',False)]}),
                'adults':fields.integer('Adults',size=64,readonly=True, states={'draft':[('readonly',False)]}),
                'childs':fields.integer('Children',size=64,readonly=True, states={'draft':[('readonly',False)]}),             
                'reservation_line':fields.one2many('hotel_reservation.line','line_id','Reservation Line'),
                'state': fields.selection([('draft', 'Draft'),('confirm','Confirm'),('cancle','Cancle'),('done','Done')], 'State',readonly=True),
                'folio_id': fields.many2many('hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id', 'Folio'),
                'dummy': fields.datetime('Dummy'),
               
        }
    _defaults = {
       
        'reservation_no': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid,'hotel.reservation'),
        'state': lambda *a: 'draft',
        'date_order': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
         
       }
    def on_change_checkout(self,cr, uid, ids, checkin_date=time.strftime('%Y-%m-%d %H:%M:%S'),checkout_date=time.strftime('%Y-%m-%d %H:%M:%S'),context=None):
        delta = datetime.timedelta(days=1)
        addDays = datetime.datetime(*time.strptime(checkout_date,'%Y-%m-%d %H:%M:%S')[:5]) + delta
        val = {'value':{'dummy':addDays.strftime('%Y-%m-%d %H:%M:%S')}}
        return val
        
    def onchange_partner_id(self, cr, uid, ids, part):
        if not part:
            return {'value':{'partner_invoice_id': False, 'partner_shipping_id':False, 'partner_order_id':False}}
        addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['delivery','invoice','contact'])
        pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id
        return {'value':{'partner_invoice_id': addr['invoice'], 'partner_order_id':addr['contact'], 'partner_shipping_id':addr['delivery'], 'pricelist_id': pricelist}}
    
     
    def confirmed_reservation(self,cr,uid,ids):
         
         for reservation in self.browse(cr, uid, ids):
             cr.execute("select count(*) from hotel_reservation as hr " \
                        "inner join hotel_reservation_line as hrl on hrl.line_id = hr.id " \
                        "inner join hotel_reservation_line_room_rel as hrlrr on hrlrr.room_id = hrl.id " \
                        "where (checkin,checkout) overlaps ( timestamp %s , timestamp %s ) " \
                        "and hr.id <> cast(%s as integer) " \
                        "and hr.state = 'confirm' " \
                        "and hrlrr.hotel_reservation_line_id in (" \
                        "select hrlrr.hotel_reservation_line_id from hotel_reservation as hr " \
                        "inner join hotel_reservation_line as hrl on hrl.line_id = hr.id " \
                        "inner join hotel_reservation_line_room_rel as hrlrr on hrlrr.room_id = hrl.id " \
                        "where hr.id = cast(%s as integer) )" \
                        ,(reservation.checkin,reservation.checkout,str(reservation.id),str(reservation.id))
                        )
             res = cr.fetchone()
             roomcount =  res and res[0] or 0.0
             if roomcount:
                 raise osv.except_osv('Warning', 'You tried to confirm reservation with room those already reserved in this reservation period')
             else:
                 
                 self.write(cr, uid, ids, {'state':'confirm'})
             return True
    
    def _create_folio(self,cr,uid,ids):
        for reservation in self.browse(cr,uid,ids):
            for line in reservation.reservation_line:
                 for r in line.reserve:
                    folio=self.pool.get('hotel.folio').create(cr,uid,{
                                                                      'date_order':reservation.date_order,
                                                                      'shop_id':reservation.shop_id.id,
                                                                      'partner_id':reservation.partner_id.id,
                                                                      'pricelist_id':reservation.pricelist_id.id,
                                                                      'partner_invoice_id':reservation.partner_invoice_id.id,
                                                                      'partner_order_id':reservation.partner_order_id.id,
                                                                      'partner_shipping_id':reservation.partner_shipping_id.id,
                                                                      'checkin_date': reservation.checkin,
                                                                      'checkout_date': reservation.checkout,
                                                                      'room_lines': [(0,0,{'folio_id':line['id'],
                                                                                           'checkin_date':reservation['checkin'],
                                                                                           'checkout_date':reservation['checkout'],
                                                                                           'product_id':r['id'],
                                                                                           'name':reservation['reservation_no'],
                                                                                           'product_uom':r['uom_id'].id,
                                                                                           'price_unit':r['lst_price'],
                                                                                           'product_uom_qty':(datetime.datetime(*time.strptime(reservation['checkout'],'%Y-%m-%d %H:%M:%S')[:5]) - datetime.datetime(*time.strptime(reservation['checkin'],'%Y-%m-%d %H:%M:%S')[:5])).days   
                                                                                           
                                                                                           })],
                                                                     'service_lines':reservation['folio_id']     
                                                                       })
            cr.execute('insert into hotel_folio_reservation_rel (order_id,invoice_id) values (%s,%s)', (reservation.id, folio))
            self.write(cr, uid, ids, {'state':'done'})
        return True
hotel_reservation()

class hotel_reservation_line(osv.osv):
     _name = "hotel_reservation.line"
   
     _description = "Reservation Line"
     _columns = {
                 
               'line_id':fields.many2one('hotel.reservation'),
               'reserve':fields.many2many('product.product','hotel_reservation_line_room_rel','room_id','hotel_reservation_line_id', domain="[('isroom','=',True),('categ_id','=',categ_id)]"),   
               'categ_id': fields.many2one('product.category','Room Type',domain="[('isroomtype','=',True)]"),
              
        }
hotel_reservation_line()

 

 

# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

 

 

 

 

 

0
Avatar
Discard
Husam M Alfarra
Author

Dear Med i dont know what u mean about the content of the python file where date_start and date_end are defined

Husam M Alfarra
Author

hotel_reservation_wizard.xml_____________________________________ hotel.reservation.wizard.formhotel.reservation.wizardform Reservation Listhotel.reservation.wizardformformnewmake.folio.wizard.formwizard.make.folioform

Husam M Alfarra
Author

thanks ________________hotel_reservation_wizard.py____________________________________ from osv import fields from osv import osv import time from mx import DateTime import datetime import pooler from tools import config import wizard import netsvc class hotel_reservation_wizard(osv.osv_memory): _name = 'hotel.reservation.wizard' _columns = { 'date_start' :fields.datetime('Start Date',required=True), 'date_end': fields.datetime('End Date',required=True), } def report_reservation_detail(self,cr,uid,ids,context=None): datas = { 'ids': ids, 'model': 'hotel.reservation', 'form': self.read(cr, uid, ids)[0] } return { 'type': 'ir.actions.report.xml', 'report_name': 'reservation.detail', 'datas': datas, } def report_checkin_detail(self,cr,uid,ids,context=None): datas = { 'ids': ids, 'model': 'hotel.reservation', 'form': self.read(cr, uid, ids)[0] } return { 'type': 'ir.actions.report.xml', 'report_name': 'checkin.detail', 'datas': datas, } def report_checkout_detail(self,cr,uid,ids,context=None): datas = { 'ids': ids, 'model': 'hotel.reservation', 'form': self.read(cr, uid, ids)[0] } return { 'type': 'ir.actions.report.xml', 'report_name': 'checkout.detail', 'datas': datas, } def report_maxroom_detail(self,cr,uid,ids,context=None): datas = { 'ids': ids, 'model': 'hotel.reservation', 'form': self.read(cr, uid, ids)[0] } return { 'type': 'ir.actions.report.xml', 'report_name': 'maxroom.detail', 'datas': datas, } hotel_reservation_wizard() class make_folio_wizard(osv.osv_memory): _name = 'wizard.make.folio' _columns = { 'grouped':fields.boolean('Group the Folios'), } _defaults = { 'grouped': False, } def makeFolios(self, cr, uid, data, context): order_obj = self.pool.get('hotel.reservation') newinv = [] for o in order_obj.browse(cr, uid, context['active_ids'], context): for i in o.folio_id: newinv.append(i.id) return { 'domain': "[('id','in', ["+','.join(map(str,newinv))+"])]", 'name': 'Folios', 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'hotel.folio', 'view_id': False, 'type': 'ir.actions.act_window' } make_folio_wizard()

Husam M Alfarra
Author

According to your log, the error is related to hotel_reservation_wizard.xml file, and in this file there is at least two (2) fields " date_start and date_end", and those fields must be defined somewhere in a python file (maybe: hotel_reservation_wizard.py)

Med Said BARA

Try to review the content of the __init__.py files, it seems that your files are not loaded in the correct order. This means that (for example: hotel_reservation_wizard.py must be loaded first before hotel_reservation_wizard.xml)

Med Said BARA

Another thing, when importing from OpenERP modules (like OSV) use: from openerp.osv import osv, fields

Husam M Alfarra
Author

Try to review the content of the __init__.py files, it seems that your files are not loaded in the correct order. This means that (for example: hotel_reservation_wizard.py must be loaded first before hotel_reservation_wizard.xml) ____________________________________________________ how can i organize the loaded ?

Med Said BARA

Under your folder module (hotel !!!) there is a first __init__.py file (beside the __openerp__.py file), in this one import the.py filesof this folder (but not the __openerp__.py file) and also import the subfolders ( like: import wizard). After that in each subfolder if there is an other __init__.py file, in this one, just import the .py files of this subfolder.

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Sign up
Related Posts Replies Views Activity
unique mail message_id_res_partner Error when selecting products from the table in a Purchase Order
ValidationError
Avatar
Avatar
1
Nov 25
317
Track visitors on Website
webclient
Avatar
Avatar
1
Oct 25
883
validator.schema.org error on field listPrice
webclient
Avatar
0
Sep 25
1003
After activating, then disabling, 2FA - one of our users can no longer log in. He is still being asked for an Authenticator code. Solved
webclient
Avatar
Avatar
2
Jul 25
1658
How to Effectively Integrate ChatGPT (or AI Tools) into Business Processes?
webclient
Avatar
Avatar
Avatar
2
Jul 25
4676
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now