from odoo import models, api, fields, _ from odoo.exceptions import UserError from datetime import datetime # import datetime import logging from terbilang import Terbilang import pytz from pytz import timezone class DownPayment(models.Model): _name = 'down.payment' _description = 'Down Payment Management' _rec_name = 'number' user_id = fields.Many2one('res.users', string='Diajukan Oleh', default=lambda self: self.env.user, tracking=3) number = fields.Char(string='No. Dokumen', default='New Draft', tracking=3) applicant_name = fields.Char(string='Nama Pemohon', tracking=3, required=True) nominal = fields.Float(string='Nominal', tracking=3, required=True) bank_name = fields.Char(string='Bank', tracking=3, required=True) account_name = fields.Char(string='Nama Account', tracking=3, required=True) bank_account = fields.Char(string='No. Rekening', tracking=3, required=True) detail_note = fields.Text(string='Keterangan Penggunaan Rinci', tracking=3) status = fields.Selection([ ('draft', 'Draft'), ('pengajuan1', 'Menunggu Approval Departement'), ('pengajuan2', 'Menunggu Pengecekan AP'), ('pengajuan3', 'Menunggu Approval Pimpinan'), ('approved', 'Approved'), ('reject', 'Rejected') ], string='Status', default='draft', tracking=3, index=True, track_visibility='onchange') status_pay_down_payment = fields.Selection([ ('pending', 'Pending'), ('payment', 'Payment'), ], string='Status Pembayaran', default='pending', tracking=3) departement_type = fields.Selection([ ('sales', 'Sales'), ('merchandiser', 'Merchandiser'), ('marketing', 'Marketing'), ('logistic', 'Logistic'), ('procurement', 'Procurement'), ('fat', 'FAT'), ('hr_ga', 'HR & GA'), ], string='Departement Type', tracking=3, required=True) # Sales & MD : Darren ID 19 # Marketing : Iwan ID 216 # Logistic & Procurement : Rafly H ID 21 # FAT : Stephan ID 28 # HR & GA : Akbar ID 7 / Pimpinan # --------------------------------------- # AP : Manzila (Finance) ID 23 def action_realisasi_pum(self): self.ensure_one() # Logic untuk realisasi PUM return def action_confirm_payment(self): self.ensure_one() # Logic untuk konfirmasi pembayaran return def action_reject(self): self.ensure_one() # Logic untuk konfirmasi pembayaran return def action_approval_check(self): self.ensure_one() # Logic untuk konfirmasi pembayaran return @api.model def create(self, vals): if not vals.get('number') or vals['number'] == 'New Draft': vals['number'] = self.env['ir.sequence'].next_by_code('down.payment') or 'New Draft' return super(DownPayment, self).create(vals) class RealizationDownPayment(models.Model): _name = 'realization.down.payment' _description = 'Realization Down Payment Management' # number = fields.Char(string='No. Dokumen', tracking=3) title = fields.Char(string='Judul', required=True, tracking=3) goals = fields.Text(string='Tujuan', tracking=3, required=True) related = fields.Char(string='Terkait', tracking=3, required=True) # Page Rincian Pemberian PUM date_line = fields.Date(string='Tanggal', required=True, tracking=3, default=lambda self: fields.Date.today()) info_line = fields.Char(string='Description', required=True, tracking=3) value_line = fields.Float(string='Nilai', required=True, tracking=3) grand_total = fields.Float(string='Grand Total', tracking=3) # Page Rincian Penggunaan PUM date_line_use = fields.Date(string='Tanggal', required=True, tracking=3, default=lambda self: fields.Date.today()) info_line_use = fields.Char(string='Description', required=True, tracking=3) value_line_use = fields.Float(string='Nominal', required=True, tracking=3) attachment = fields.Boolean(string='Attachment', tracking=3, default=False) grand_total_use = fields.Float(string='Grand Total', tracking=3) value_down_payment = fields.Float(string='PUM', required=True, tracking=3) remaining_value = fields.Float(string='Sisa Uang PUM', tracking=3) note_approval = fields.Text(string='Note Persetujuan', tracking=3)