Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie

hey everyone,

Can you help me, here I tried to create a schedule button for posting salary, but here I encountered many errors. The most dominant error is in the model_id and looping for the transaction does not run so as skipped it immediately displays the successful posting process. Can you guys correct any of my program code that I need to fix. Thank

class BSDPosting(models.Model):    
​_name = 'bsd.posting'   
​_description = 'BSD Posting'
​nama = fields.Char(string='Nama Transaksi', required=True)   
​date_from = fields.Date(string='Date From', required=True)   
​date_to = fields.Date(string='Date To', required=True)   
​posting_date = ​fields.Datetime(required=True, string='Waktu Mulai')
​def action_schedule_posting(self):       
      ​posting_date = self.posting_date       
​code_model = "env['bsd.posting'].action_posting_gaji()" 
​self.env['ir.cron'].sudo().create({
​'name': 'Posting Take Home Pay',
​'model_id': self.env.ref('bsd_payroll.model_bsd_posting').id, 
​'state': 'code',
​'code': code_model,
​'nextcall': posting_date,           
​'interval_type': 'days',           
​'numbercall': 1,           
​'active': True,})
    def action_posting_gaji(self):               
​client_secret = "CLIENT SECRET"       
​api = "URL API"       
​path = ["api/auth",               
​"api/tabungan/info",               
​"api/trans/setoran/coa",           
​"api/trans/penarikan/coa",             
​"api/trans/setoran/tab"]
​endpoint = f'{api}{path[0]}'       
​endpoint_setoran_coa = f'{api}{path[2]}'
​date_from_str = fields.Date.to_string(fields.Date.today().replace(day=1))       
​date_to_str = fields.Date.to_string((datetime.now().date() + relativedelta(months=1, day=1, days=-1)))
      ​date_from = datetime.strptime(date_from_str, '%Y-%m-%d').date()
​date_to = datetime.strptime(date_to_str, '%Y-%m-%d').date()
​date_from_formatted = date_from.strftime('%Y-%m-%d')
​date_to_formatted = date_to.strftime('%Y-%m-%d')
​domain = [('struct_id', '=', 5),
​('date_from', '>=',date_from_formatted),
​('date_to',' ​​def get_net_wage_by_employee(get_net_wage_by_periode):
​net_wage_by_employee = {}           
​for payslip in get_net_wage_by_periode:               
​norek = payslip.get('x_norek')               
​net_wage = payslip.get('net_wage')               
​if norek and net_wage:                   
​net_wage_str =str(net_wage).rstrip('0').rstrip('.')                    ​net_wage_by_employee[norek] = net_wage_str                    ​net_wage_int = int(net_wage_str)
​net_wage_by_employee[norek] = net_wage_int
​return net_wage_by_employee
​auth = {"username": "oddo_test", "password": "oddotest3jW6R%Zm"} 
​json_data = json.dumps(auth)
​payload = f"{auth['username']}:{auth['password']}".encode() 
​signature = hmac.new(client_secret.encode(), payload,hashlib.sha256).hexdigest()
        headers = {"x-signature": signature,
​"Content-Type": "application/json"}
​response = requests.post(endpoint, data=json_data, headers=headers)
​print(response.status_code)
​print(response.text)
​response_json = json.loads(response.text)
​bearer_token = response_json.get('token')
print("=============================================================")
net_wage_by_employee = get_net_wage_by_employee(get_net_wage_by_periode)
delay_seconds = 5
excel_file_path = "report_take_home_pay.xlsx"       
workbook = xlsxwriter.Workbook(excel_file_path)       
worksheet = workbook.add_worksheet()  
header = ["Code", "Message","TransID", "Amount", "Norek", "RekeningName", "SumberNorek"]       
for col, title in enumerate(header):           
​worksheet.write(0, col, title)
row_counter = 0
try:           
​for norek, net_wage in net_wage_by_employee.items():
​request_coa = { "no_tabungan": norek,                                ​"rek_sumber":"X.XXX.XX",                           
​"amount":net_wage}               
​json_data_ = json.dumps(request_coa)               
​message = f"{request_coa['no_tabungan']}:{request_coa['rek_sumber']}:{request_coa['amount']}".encode()                ​signature_ = hmac.new(client_secret.encode(), message, hashlib.sha256).hexdigest()               
​headers_nasabah = {"x-signature": signature_,
​"Content-Type": "application/json",
​​"Authorization": "Bearer " + bearer_token}
​response_2 = requests.post(endpoint_setoran_coa, data=json_data_,
​headers=headers_nasabah, timeout=30)             
​time.sleep(delay_seconds)             
​print(response_2.status_code)               
​print(response_2.text)               
​response_json = json.loads(response_2.text)             
​row_counter += 1               
​worksheet.write(row_counter, 0, response_json["code"]
​worksheet.write(row_counter, 1, response_json["message"])
​worksheet.write(row_counter, 2, response_json["transid"]
​worksheet.write(row_counter, 3, response_json["amount"])
​worksheet.write(row_counter, 4, response_json["rekening"]["norek"]) 
​worksheet.write(row_counter, 5, response_json["rekening"]["name"]) 
​worksheet.write(row_counter, 6, response_json["sumber"]["norek"])
​print("Posting Take Home Pay success!!")
​print("=============================================================")
​workbook.close()
​print("Data telah disimpan ke dalam file Excel:", excel_file_path)
​os.startfile(excel_file_path)       
except requests.exceptions.ConnectTimeout as e:           
​print("Koneksi time out:", e)
Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
5
wrz 25
22000
3
sie 25
3184
1
maj 25
3076
1
kwi 25
4040
1
kwi 25
4907