Periodisasi Penetapan Kurs Pajak

by A Rahman

Selama ini periodisasi penetapan kurs NDPBM (Nilai Dasar Perhitungan Bea Masuk) ditetapkan dan berlaku mulai Senin sampai dengan Minggu. Maka setelah perubahan periodisasi yang dimulai pada tanggal 17 Oktober 2012 ini, maka periodisasi penetapan kurs NDPBM akan berlaku mulai Rabu sampai dengan Selasa.

Untuk masa transisi perubahan periodisasi maka kurs pajak yang berlaku untuk hari Senin dan Selasa tanggal 15 dan 16 Oktober 2012 akan mengacu pada nilai kurs yang ditetapkan pada minggu sebelumnya yaitu periode 8 sampai dengan 14 Oktober 2012.

Histori kurs pajak bisa kalian lihat di websitenya Ortax disini.

Yang mau aku bahas disini adalah bikin fungsi entri periodisasi tersebut.  Kenapa bikin form sesuai periodisasi ini? Karena kita biasanya mencatat atau melakukan entry kurs pajak seminggu sekali.  Biasanya di hari Selasa pagi kita sudah bisa lihat kurs pajak dari web lalu kita catat atau kita input.  Kadang-kadang kita lupa baru hari Rabu atau Kamis atau setelahnya baru akan melakukan input kurs pajak yang mulai berlaku minggu tersebut, maka mulainya tetap saja hari Rabu dan berakhir hari Selasa.

Iseng-iseng form nya seperti ini :

Idenya adalah mencari hari Rabu terdekat dari tanggal hari ini atau dari tanggal yang dimasukkan (tanggal awal periodisasi kurs), lalu menghitung tanggal satu minggu hari Selasa depannya (tanggal akhir periodisasi kurs pajak).

Caranya, hari Rabu itu kan kalo pakai fungsi DayOfWeek nilainya 4, maka untuk mencari hari Rabu terdekat tinggal gunakan rumus :

 Tanggal+ 4 – DayOfWeek(Tanggal)

Sedang mencari tanggal satu minggu kemudian tinggal ditambah 6 saja seperti rumus berikut : tanggal + 6.

Daripada bingung baca kalimat, silahkan saja baca source code berikut :

unit frmKursPajak;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls;

type
TFormKursPajak = class(TForm)
lbDateNow: TLabel;
lbNextWednesday: TLabel;
lbNextOneWeek: TLabel;
DateTimePickerToday: TDateTimePicker;
DateTimePickerNextWednesday: TDateTimePicker;
DateTimePickerNextOneWeek: TDateTimePicker;
lbToday: TLabel;
lbWednesday: TLabel;
lbNextWeek: TLabel;
procedure FormActivate(Sender: TObject);
procedure DateTimePickerTodayChange(Sender: TObject);
procedure DateTimePickerNextWednesdayChange(Sender: TObject);
private
{ Private declarations }
Function FirstNextWedneday(TodaysDate:TDateTime):TDateTime;
Function NextOneWeek(TodaysDate:TDateTime):TDateTime;
Procedure ShowDayName;
public
{ Public declarations }
end;

var
FormKursPajak: TFormKursPajak;

implementation

{$R *.dfm}

{ TFormKursPajak }

function TFormKursPajak.NextOneWeek(TodaysDate: TDateTime): TDateTime;
var TheDate :TDateTime;
begin
TheDate := TodaysDate + 6 ;
result := TheDate;
end;

procedure TFormKursPajak.DateTimePickerNextWednesdayChange(Sender: TObject);
begin
DateTimePickerNextOneWeek.DateTime := NextOneWeek(DateTimePickerNextWednesday.DateTime);
ShowDayName;
end;

procedure TFormKursPajak.DateTimePickerTodayChange(Sender: TObject);
begin
DateTimePickerNextWednesday.DateTime := FirstNextWedneday(DateTimePickerToday.DateTime);
DateTimePickerNextOneWeek.DateTime := NextOneWeek(DateTimePickerNextWednesday.DateTime);
ShowDayName;
end;

function TFormKursPajak.FirstNextWedneday(TodaysDate: TDateTime): TDateTime;
var TheDate :TDateTime;
begin
TheDate := TodaysDate + 4 – DayOfWeek(TodaysDate);
result := TheDate;
end;

procedure TFormKursPajak.FormActivate(Sender: TObject);
begin
DateTimePickerToday.DateTime := now;
DateTimePickerNextWednesday.DateTime := FirstNextWedneday(DateTimePickerToday.DateTime);
DateTimePickerNextOneWeek.DateTime := NextOneWeek(DateTimePickerNextWednesday.DateTime);
ShowDayName;
end;

procedure TFormKursPajak.ShowDayName;
const Days: array[1..7] of string =
(‘Sunday’, ‘Monday’, ‘Tuesday’,
‘Wednesday’, ‘Thursday’,
‘Friday’, ‘Saturday’);
begin
lbToday.Caption := Days[DayOfWeek(DateTimePickerToday.DateTime)];
lbWednesday.Caption := Days[DayOfWeek(DateTimePickerNextWednesday.DateTime)];
lbNextWeek.Caption := Days[DayOfWeek(DateTimePickerNextOneWeek.DateTime)];
end;

end.

Formnya seperti ini :

object FormKursPajak: TFormKursPajak
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = ‘Entry Kurs Pajak Mingguan’
ClientHeight = 104
ClientWidth = 489
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = ‘Tahoma’
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnActivate = FormActivate
PixelsPerInch = 96
TextHeight = 13
object lbDateNow: TLabel
Left = 8
Top = 12
Width = 75
Height = 13
Caption = ‘Tanggal Hari Ini’
end
object lbNextWednesday: TLabel
Left = 8
Top = 40
Width = 112
Height = 13
Caption = ‘Tanggal Rabu Terdekat’
end
object lbNextOneWeek: TLabel
Left = 8
Top = 72
Width = 149
Height = 13
Caption = ‘Tanggal Satu Minggu Kemudian’
end
object lbToday: TLabel
Left = 367
Top = 6
Width = 112
Height = 13
AutoSize = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlue
Font.Height = -11
Font.Name = ‘Tahoma’
Font.Style = []
ParentFont = False
end
object lbWednesday: TLabel
Left = 367
Top = 37
Width = 112
Height = 13
AutoSize = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlue
Font.Height = -11
Font.Name = ‘Tahoma’
Font.Style = []
ParentFont = False
end
object lbNextWeek: TLabel
Left = 367
Top = 72
Width = 112
Height = 13
AutoSize = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlue
Font.Height = -11
Font.Name = ‘Tahoma’
Font.Style = []
ParentFont = False
end
object DateTimePickerToday: TDateTimePicker
Left = 176
Top = 4
Width = 186
Height = 21
Date = 41228.511971458340000000
Time = 41228.511971458340000000
TabOrder = 0
OnChange = DateTimePickerTodayChange
end
object DateTimePickerNextWednesday: TDateTimePicker
Left = 176
Top = 32
Width = 186
Height = 21
Date = 41228.511971458340000000
Time = 41228.511971458340000000
TabOrder = 1
OnChange = DateTimePickerNextWednesdayChange
end
object DateTimePickerNextOneWeek: TDateTimePicker
Left = 176
Top = 67
Width = 186
Height = 21
Date = 41228.511971458340000000
Time = 41228.511971458340000000
TabOrder = 2
end
end

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: