Pada project ini Anda diminta utk melakukan sinkronisasi satu arah antara Drupal 7 dan Odoo, dengan menggunakan API-nya Odoo. Web API-nya Odoo bisa dibaca di sini:
https://www.odoo.com/documentation/10.0/api_integration.html
Proses sinkronisasi dimaksud harus menggunakan batch API drupal 7. Contoh batch API Drupal 7 bisa dilihat di sini:
https://api.drupal.org/api/examples/batch_example%21batch_example.module/group/batch_example/7.x-1.x
Jika Anda berminat mengerjakan project ini, harap sertakan contoh module Drupal 7 yang pernah Anda buat; akan lebih baik jika ada yang berkaitan dengan EntityFieldQuery, Drupal Form API, Batch API, dan Web Service.
Source code Drupal 7 dan database-nya, dan database Odoo-nya, akan diberikan jika Anda terpilih utk mengerjakan project ini. Buat sinkronisasi batch untuk proses2 berikut:
Tugas 1: Sinkonisasi FEED dan Product
- Yang disinkronkan ke content type FEED di Drupal 7 adalah product-produk di Odoo yang memiliki BoM dan Can be Sold dan Internal Category-nya Pakan Jadi (lihat bagian yang dilingkari pada gambar di bawah).
- Lakukan baik utk product Active maupun Archieve.
- Mapping-nya sbb:
- (Odoo) Product Name --> (D7) field_feed_name
- (Odoo) Active jika Active, Inactive jika Archieve --> (D7) field_feed_status
- Sebelum disinkronkan ke Drupal 7, check dulu apakah data product yang dimaksud sudah ada atau belum. Jangan sampai terjadi duplikasi.
- Semua content di content type FEED yang tidak terdapat di Odoo dinonaktifkan.
Tugas 2: Sinkronisasi OVK dan Product
- Yang disinkronkan ke content type OVK di Drupal 7 adalah product-produk di Odoo yang Internal Category-nya Obat-obatan (lihat bagian yang dilingkari di bawah).
- Lakukan baik utk product Active maupun Archieve.
- Mapping-nya sbb:
- (Odoo) Product Name --> (D7) field_ovk_product_name
- (Odoo) Active jika Active, Inactive jika Archieve --> (D7) field_ovk_status
- Sebelum disinkronkan ke Drupal 7, check dulu apakah data product yang dimaksud sudah ada atau belum. Jangan sampai terjadi duplikasi.
- Semua content di content type OVK yang tidak terdapat di Odoo dinonaktifkan.
Tugas 3: Sinkronisasi Invoice FEED dan PRICE LIST
- Cari Invoice product yang DIJUAL dengan Internal Category-nya Pakan Jadi di Odoo, yang statusnya Open atau Paid, untuk mendapatkan Amount-nya (harga product) untuk Invoice Date dalam kurun waktu 3 bulan terakhir.
- Lakukan update content type PRICE LIST di Drupal 7 utk field_price_list_movement utk product di atas. field_price_list_movement merupakan field collection yang berisi tanggal dan harga.
- Jika harga product suatu product sama dengan tanggal sebelumnya, maka content type PRICE LIST tidak perlu di-update.
Tugas 4: Sinkronisasi Bill OVK dan PRICE LIST
- Cari Billing product yang DIBELI dengan Internal Category-nya Obat-obatan di Odoo, yang statusnya Open atau Paid, untuk mendapatkan Amount-nya (harga product) untuk Invoice Date dalam kurun waktu 3 bulan terakhir.
- Lakukan update content type PRICE LIST di Drupal 7 utk field_price_list_movement utk product di atas. field_price_list_movement merupakan field collection yang berisi tanggal dan harga.
- Jika harga product suatu product sama dengan tanggal sebelumnya, maka content type PRICE LIST tidak perlu di-update.
Tugas 5: Sinkronisasi Production dan Purchase Order (PO)
- Produksi yang di-posting bisa kg atau butir telur sesuai konfigurasi di halaman Setting.
- Jumlah kg atau butir yang dimunculkan di halaman Posting Production juga disesuaikan dengan konfigurasi di halaman Setting (apakah dimunculkan sebagai kg atau sebagai butir).
- Tanggal di datepicker maksium yang bisa dipilih adalah hari ini.
- Ketika di-tekan "Post", maka akan menjalankan batch API utk membuatkan PO di Odoo. Penjelasannya PO yang seperti apa yang dibuat akan dijelaskan di bawah.
- Setiap harinya hanya ada satu PO utk suatu kategori. Jadi jika ketika ditekan "Post" ternyata sudah ada PO sebelumnya utk suatu kategori di tanggal yang sama, PO yang sudah ada tsb di-update dengan baru.
- PO yang di-update sebagaimana di atas adalah jika status PO-nya masih RFQ. Jika status PO-nya sudah Purchase Order, proses "Post" tidak perlu melakukan apa2 karena sudah final PO-nya.
- PO yang dibuat adalah dalam status RFQ. Vendor, Order Date, Product, Quantity, dan Unit of Measurement-nya disesuaikan dengan konfigurasi di Setting (apakah kg atau butir telur) dan Lokasi yang di-post di halaman Posting Production. Unit Price-nya dikosongkan. Lebih kurang spt gambar di bawah PO-nya nanti yang terbuat.
- Pastikan Delivery To bersesuaian dengan Warehouse/Location di Setting, contohnya sebagaimana gambar di bawah.