Skip to content

Instantly share code, notes, and snippets.

@ilyasProgrammer
Created November 12, 2017 16:28
Show Gist options
  • Save ilyasProgrammer/cf6647356c9a3722f597f72b7685a4c3 to your computer and use it in GitHub Desktop.
Save ilyasProgrammer/cf6647356c9a3722f597f72b7685a4c3 to your computer and use it in GitHub Desktop.

Revisions

  1. ilyasProgrammer created this gist Nov 12, 2017.
    121 changes: 121 additions & 0 deletions xml_rpc.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,121 @@
    import xmlrpclib
    from datetime import datetime

    # url = "http://localhost:8069"
    # db = "RAJO"
    # username = 'a'
    # password = 'a'
    url = "https://erp.atlantis-kw.com"
    db = "RAJO_TEST"
    username = 'api'
    password = 'api'
    common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
    uid = common.authenticate(db, username, password, {})
    models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))


    class Partners():
    def read(self):
    # Read customers
    model_name = 'res.partner'
    partner_ids = models.execute_kw(db, uid, password, model_name, 'search', [[['customer', '=', True]]])
    partner_records = models.execute_kw(db, uid, password, model_name, 'read', [partner_ids])
    return partner_records

    def create(self):
    # Create customer
    model_name = 'res.partner'
    vals = {
    'name': "New Customer",
    }
    new_id = models.execute_kw(db, uid, password, model_name, 'create', [vals])
    return new_id

    def update(self, id):
    # Update customer
    model_name = 'res.partner'
    models.execute_kw(db, uid, password, model_name, 'write', [[id], {
    'name': "Newer partner"
    }])


    class Product():
    # Read product
    def read(self):
    model_name = 'product.product'
    product = models.execute_kw(db, uid, password, model_name, 'search_read', [[]], {'limit': 1})[0]


    class Candidate():
    def read(self):
    # # Read candidate
    model_name = 'rajo.candidate'
    candidate = models.execute_kw(db, uid, password, model_name, 'search_read', [[]], {'limit': 1})[0]


    class SaleOrder():
    def read(self):
    # Read sale order
    model_name = 'sale.order'
    order_ids = models.execute_kw(db, uid, password, model_name, 'search', [[]])
    order_records = models.execute_kw(db, uid, password, model_name, 'read', [order_ids])

    def create(self, partner_id, candidate_id, line_name, product_id):
    # Create sale order
    model_name = 'sale.order'
    vals = {
    'origin': "A555",
    'client_order_ref': "B555",
    'partner_id': partner_id, # api partner
    'pricelist_id': 1, # Public Pricelist (KWD)
    'partner_invoice_id': partner_id,
    'partner_shipping_id': partner_id,
    'order_line': [(0, 0, {
    'name': line_name,
    'product_id': product_id,
    'product_uom_qty': 2,
    'qty_delivered': 2,
    'price_unit': 1000.00,
    'candidate_id': candidate_id,
    })]
    }
    new_id = models.execute_kw(db, uid, password, model_name, 'create', [vals])
    return new_id


    class Ticket():
    def read(self):
    # Read ticket
    model_name = 'helpdesk.ticket'
    tickets = models.execute_kw(db, uid, password, model_name, 'search_read', [[['partner_id', '=', partner['id']]]])

    def create(self, partner_id, candidate_id):
    # Create ticket
    model_name = 'helpdesk.ticket'
    vals = {
    'name': "Test ticket",
    'partner_id': partner_id,
    'candidate_id': candidate_id,
    }
    new_id = models.execute_kw(db, uid, password, model_name, 'create', [vals])
    return new_id


    class Payment():
    def create(self, sale_order_id):
    # Create invoice and register payment
    model_name = 'sale.order'
    models.execute_kw(db, uid, password, model_name, 'action_confirm', [[sale_order_id]])
    new_invoice_id = models.execute_kw(db, uid, password, model_name, 'action_invoice_create', [[sale_order_id]])
    model_name = 'account.invoice'
    models.execute_kw(db, uid, password, model_name, 'action_invoice_open', new_invoice_id)
    ctx = {'active_model': 'account.invoice', 'active_ids': new_invoice_id}
    vals = {
    'payment_date': str(datetime.now()),
    'journal_id': 7, # Bank journal ID
    'payment_method_id': 1, # manual
    'amount': 2000.00,
    }
    model_name = 'account.register.payments'
    registered_payment_id = models.execute_kw(db, uid, password, model_name, 'create', [vals], {'context': ctx})
    models.execute_kw(db, uid, password, model_name, 'create_payment', [[registered_payment_id]], {'context': ctx})