为odoo反应本机应用程序

Posted

技术标签:

【中文标题】为odoo反应本机应用程序【英文标题】:react native application for odoo 【发布时间】:2018-09-11 11:07:54 【问题描述】:

我想为 Odoo ERP 系统中的假期请求制作移动应用程序。我使用本机反应来制作应用程序。问题是我试图从用户那里获取输入,然后将其传递给 Odoo API 以在系统中提交,但我找不到一个好的方法来做到这一点

Odoo api - xmlrpc:

var Odoo = require('odoo-xmlrpc');

var odoo = new Odoo(
    url: 'http://abdelazizs-macbook-pro.local',
    port: '8069',
    db: 'hr_2-9_test_11',
    username: 'admin',
    password: 'admin'
);

odoo.connect(function (err) 
    if (err)  return console.log(err); 
    console.log('Connected to Odoo server.');    
);

odoo.connect(function (err) 
    if (err)  return console.log(err); 
    console.log('Connected to Odoo server.');
    var inParams = [];
    inParams.push('name': 'egg'
    ,'holiday_status_id':parseInt(1)
    , 'date_from':'2018-08-14 16:35:38'
    , 'date_to':'2018-08-16 16:35:38'
    , 'employee_id':parseInt(1))
    var params = [];
    params.push(inParams);
    odoo.execute_kw('hr.holidays', 'create', params, function (err, value) 
        if (err)  return console.log(err); 
        console.log('Result: ', value);
    );
); 

我们想用用户输入替换这些默认参数

'name': 'egg'
    ,'holiday_status_id':parseInt(1)
    , 'date_from':'2018-08-14 16:35:38'
    , 'date_to':'2018-08-16 16:35:38'
    , 'employee_id':parseInt(1)

这是选择日期的应用组件之一:

    import React,  Component  from 'react';
import DatePicker from 'react-native-datepicker';
import Text, View from 'react-native';

export default class Component1 extends Component 
    constructor(props)
        super(props)
        this.state = date:"2019-05-15"



      

 render()
    return(

      <View>
        <Text style=fontSize:25,>From</Text>
       <DatePicker
         style=width: 300,justifyContent: 'center',
         
     date=this.state.date
     mode="date"
     placeholder="select date"
     format="YYYY-MM-DD"

     confirmBtnText="Confirm"
     cancelBtnText="Cancel"

     customStyles=
       dateIcon: 
         position: 'absolute',
         right: 0,
         top: 4,
         marginRight: 10


       ,
       dateInput: 
         marginLeft: 36
       
       // ... You can check the source to find the other keys.
     
     onDateChange=(date) => this.setState(date: date)
   />

  </View>





    );


 



【问题讨论】:

【参考方案1】:

你必须像这样对你的组件进行调用

class MyComponent extends React.Component
    state = 
        date: ''
    
    callToOdoo = () => 
        //your odoo call
    
    dateHandler = (date) => 
        this.setState(date: date, () => 
            this.callToOdoo();
        )
    
    render()
        return(<View>
              <DatePicker
                  ...
               onDateChange=this.dateHandler
        />

【讨论】:

以上是关于为odoo反应本机应用程序的主要内容,如果未能解决你的问题,请参考以下文章

为android构建应用程序时用于cameraview的多个文件反应本机

反应 JS 与反应本机

Json 服务器正在运行但未为反应本机应用程序获取数据

如何在本机反应中为整个应用程序(如每个屏幕)在屏幕底部显示自定义视图

不变违规:不变违规:尝试从未标记为“本机”的节点获取本机标记 - 反应导航更新导致崩溃

将本机 base64 反应为 pdf 展览打印