Professional Documents
Culture Documents
HALAMAN JUDUL
LAYANAN PENYEDIA INFORMASI KREDIT
UKM BERBASIS SMS GATEWAY
Oleh :
BAHARUDDIN
NRP. 7406 040 080
Dosen Pembimbing :
PROYEK AKHIR
Oleh :
BAHARUDDIN
7406 040 080
HALAMAN PENGESAHAN
3. Yuliana Setiowati, S.Kom
NIP: 132 300 678
Mengetahui,
Ketua Jurusan Teknologi Informasi
ii
ABSTRAK
iii
ABSTRACT
iv
KATA PENGANTAR
Wassalamu’alaikum Wr. Wb
Penulis
v
UCAPAN TERIMA KASIH
Segala ucapan terima kasih tentunya belum cukup buat segala jasa dan
bantuannya semua. Hanya itu yang bisa penulis ucapkan, semoga Allah SWT
membalas semua kebaikan Anda.
vi
DAFTAR ISI
HALAMAN JUDUL.......................................................................................i
HALAMAN PENGESAHAN .......................................................................ii
ABSTRAK.................................................................................................... iii
ABSTRACT ..................................................................................................iv
KATA PENGANTAR ...................................................................................v
UCAPAN TERIMA KASIH ........................................................................vi
DAFTAR ISI ................................................................................................vii
DAFTAR GAMBAR .....................................................................................x
DAFTAR TABEL.........................................................................................xi
vii
2.5.1.2 Data Manipulation Language............................................19
2.6 MySQL............................................................................................20
2.6.1 Kelebihan MySQL ...................................................................20
viii
4.5.1 File Terima1.log.......................................................................80
4.5.2 File Kirim1.log.........................................................................80
4.5.3 File ukmsmsgateway.log..........................................................81
4.6 KESALAHAN – KESALAHAN YANG MUNGKIN TERJADI ..81
ix
DAFTAR GAMBAR
x
DAFTAR TABEL
xi
BAB I
PENDAHULUAN
1.4 TUJUAN
2
1.5 METODOLOGI PENULISAN
BAB I PENDAHULUAN
1. Latar Balakang
2. Perumusan Masalah
3
3. Batasan Masalah
4. Tujuan
5. Metodologi Penulisan
6. Sistematika Pembahasan
1. Basis Data
2. SMS (Short Message Service)
3. Pemrograman Borland Delphi
4. GAMMU (GNU All Mobile Management Utilities)
5. SQL (Structured Query Language)
6. MySQL
4
BAB V PENUTUP
5
---Halaman ini sengaja di kosongkan---
6
BAB II
TEORI PENUNJANG
Basis Data (Database) terdiri dari dua kata yaitu: Basis dan Data.
Basis yang berarti markas/ gudang, tempat bersarang/ berkumpul.
Sedang- kan Data memiliki arti representasi fakta dunia nyata yang
mewakili suatu obyek (seperti, manusia: dosen, mhs, pelanggan,dll;
barang: buku, meja; peristiwa, konsep, dsb.), yang direkam baik dalam
bentuk angka, huruf, teks, gambar atau suara. Basis Data adalah
sekumpulan data yang saling ber-relasi.
Basis Data adalah himpunan kelompok data (arsip) yang saling
berhubungan, yang diorganisasi sedemikian rupa, sehingga kelak dapat
dimanfaatkan kembali dengan cepat. Basis Data merupakan kumpulan
data yang saling berhubungan yang disimpan secara bersama tanpa
adanya pengulangan (redudansi) data. Basis Data merupakan kumpulan
file/tabel/arsip yang saling berhubungan yang disimpan dalam media
penyimpanan elektronik[2].
7
4. keamanan data, berhubungan dengan masalah keamanan data dalam
sistem basis data.
5. integrasi data, berhubungan dengan unjuk kerja sistem agar dapat
melakukan kendali atau kontrol pada semua bagian sistem sehingga
sistem selalu beroperasi dalam pengendalian penuh.
8
Fungsi yang lebih penting dari DBMS adalah proteksi dan
maintain database dalam jangka panjang
1. Tabel, Merupakan kumpulan dari suatu field dan record (kolom dan
baris).
2. Field, Field adalah sebutan untuk mewakili suatu record.
3. Record, Merupakan kumpulan elemen-elemen yang saling berkaitan
yang berisi informasi tentang suatu isi data secara lengkap. Satu
record mewakili satu data atau informasi tentang seseorang
misalnya, nomor daftar, nama pendaftar, alamat, tanggal masuk.
4. Primary Key, merupakan kolom (field) yang menjadi titik acuan
pada sebuah tabel yang bersifat unik, dimana dalam artian data
tidak ada satu nilai pun yang sama atau kembar dalam tabel tersebut.
5. Foreign Key (kunci relasi), suatu kolom dalam tabel yang digunakan
sebagai “kaitan” atau relasi untuk membentuk satu hubungan yang
didapati dari tabel induk, umumnya hubungan yang terbentuk antar
tabel adalah satu ke banyak (one to many).
6. Index, merupakan struktur basis data secara fisik, yang digunakan
untuk meng-optimalisasi pemrosesan data dan mempercepat proses
pencarian data.
9
2.1.4 Relationship
10
6. Relasi Many to Many 2 atribute dalam satu file.
Hubungan antara satu atribut dengan atribut yang lain dalam satu
file yang sama mempunyai hubungan banyak lawan banyak.
Misalnya pada satu alamat pegawai terdapat puluhan pegawai kantor
tersebut dan beberapa pegawai punya nama yang sama mempunyai
alamat berbeda. Maka hubungan antara atribut alamat pegawai
dengan nama pegawai adalah beberapa alamat menunjukkan nama
pegawai yang sama dan sebaliknya.
11
Keberhasilan dan popularitas SMS antara lain disebabkan oleh :
4. Handal (reliable)
Jaringan GSM secara umum diakui kehandalannya dalam
mengirimkan data, dan SMS mewarisi kehandalan tersebut.
12
3. Push – Scheduled, yaitu pesan yang diaktivasi oleh aplikasi
berdasarkan waktu yang telah terjadwal
4. Push – Personal profile, yaitu pesan yang diaktivasi oleh aplikasi
berdasarkan profil dan preference dari pengguna
13
Gambar 2.2 Tampilan Awal IDE Borland Delphi
14
2.3.2 Object Inspektor
15
Gambar 2.6 Editor source program/ unit.pas
16
2.3.4 Thread
17
2.4 GAMMU (GNU All Mobile Management Utilities)
1. manajemen SMS,
2. manajemen MMS,
3. upload logo,
4. manajemen buku telepon,
5. upload melalui WAP.
18
2.5.1 Mengenal SQL
19
2.6 MySQL
20
9. Konektivitas dan keamanan. MySQL mendukung dan menerapkan
sistem keamanan dan izin akses tingkat lanjut (advanced
permissions and security system), termasuk dukungan pengamanan
dengan cara pengacakan lapisan data (SSL transport layer
encryption),
10. Fleksibilitas/portabilitas. MySQL mendukung perintah-perintah
ANSI SQL 99 dan beberapa perintah basis data alternatif lainnya
sehingga memudahkan untuk beralih dari dan ke MySQL,
11. Lintas platform sistem operasi. MySQL dapat dijalankan pada
beberapa sistem operasi yang berbeda seperti Linux, Microsoft
Windows, FreeBSD, Sun Solaris, IBM’s AIX, Mac OS X, HP-UX,
AIX, QNX, Novell NetWare, SCO Open Unix, SGI Irix, dan Dec
OSF.
21
---Halaman ini sengaja dikosongkan---
22
BAB III
23
Gambar 3.2 DFD level 0 Sistem UKM SMS Gateway
24
Gambar 3.3 DFD level 1 Sistem UKM SMS Gateway
25
3.2 PROSES INFORMASI
1. Registrasi anggota
2. Input informasi data kredit
3. Update data kredit
4. Request informasi
1. UKM
a. UKM melakukan registrasi anggota pada server SMS melalui
pesan perintah registrasi yang dikirimkan lewat HP
b. Server SMS membalas pesan dari UKM dengan mengirimkan
perintah untuk mengisi kelengkapan data anggota sebagai pihak
UKM
c. Kemudian UKM melakukan pengisian data anggota melalui
pesan yang dikirimkan ke server SMS
d. Dari server SMS membalas pesan dari UKM dengan
mengirimkan informasi yang berisi “user telah suskses
melakukan registrasi anggota” maupun user belum sukses
melakukan registrasi anggota pada server SMS
2. BANK
a. BANK melakukan registrasi anggota dengan pesan perintah
registrasi yang dikirimkan melalui HP ke server SMS
b. Server SMS membalas pesan dari BANK dengan informasi
perintah untuk mengisi data anggota sebagai BANK
c. Kemudian BANK melakukan pengisian data anggota melalui
pesan yang dikirimkan ke server SMS
26
d. Dari server SMS membalas pesan dari BANK dengan berisi
informasi apakah BANK telah berhasil melakukan registrasi
anggota maupun belum pada server SMS
1. Input Kredit
a. BANK melakukan input/ memberikan data informasi kedit ke
server SMS
b. Server SMS membalas pesan input kredit yang dikirim oleh
BANK dengan pesan berisi informasi proses input kredit sukses
maupun tidak sukses karena data yang belum lengkap.
c. Jika sukses oleh server SMS data tersebut disimpan dalam tabel
tbkredit dan ke tabel tbtawaran yang berisi data IdKredit dan
IdBank yang berarti BANK tersebut pernah menawarkan
informasi suatu kredit pada server SMS
27
1. BANK mengirim pesan yang bersi data update kredit ke server SMS
2. Server SMS mengecek status BANK dan data kredit yang akan
diupdate, kemudian server SMS membalas pesan ke BANK yang
berisi informasi mengenai proses update data kredit berhasil maupun
tidak berhasil dilakukan oleh server SMS
3. Jika proses update berhasil dilakukan, server akan mengupdate data
kredit lama dengan data kredit yang baru yang berada pada tabel
tbkredit.
1. UKM
a. Request Info Kredit
- UKM mengirim pesan berisi data request informasi kredit ke
server SMS
- Server SMS membalas pesan ke UKM yang berisi informasi
seluruh data-data kredit yang terdapat pada server SMS yang
memenuhi syarat request, maupun informasi jika data-data
kredit yang direquest tidak tersedia.
- Jika data kredit yang direquest tidak tersedia pada server
SMS, server SMS akan mencari informasi tersebut dengan
mengirim pesan informasi tersebut ke BANK yang
memehuhi/ melayani syarat request informasi tersebut.
28
c. Request Syarat Kredit
- UKM mengirim pesan ke server SMS yang berisi data untuk
merequest syarat kredit dari kredit yang pernah direquest
sebelumnya
- Server SMS mengecek data kredit yang direquest syarat-
syaratnya oleh UKM, dan server SMS membalas pesan ke
UKM yang berisi informasi data-data syarat kredit yang
direquest maupun informasi request syarat gagal
- Jika data request syarat tersedia, server SMS akan
memberikan informasi ke UKM mengenai data-data syarat
daripada kredit yang direquest tersebut.
2. BANK
a. Request Data Kredit
- BANK mengirim pesan ke server SMS yang berisi perintah
request Id Kredit yang pernah ditawarkannya ke server SMS
- Server SMS membalas pesan dari BANK dengan informasi
yang berisi data kredit yang masih aktif yang dimiliki oleh
BANK tersebut
- Jika BANK tidak pernah menawarkan informasi kredit ke
server SMS, server SMS akan membalas pesan ke BANK
yang berisi request Id kredit tersebut tidak tersedia dalam
server SMS.
29
3.3.1 Penerimaan Pesan (SMS)
1. Berawal dari sistem mengambil SMS yang masuk pada SIM Card
HP server SMS
2. tahap berikutnya yaitu sistem malakukan pengambilan data pesan
dan nomor pengirim dari SMS yang diambil
3. Sistem mengolah informasi yang ada pada pesan, setelah proses olah
pesan selesai dilakukan sistem melakukan penghapusan terhadap
SMS yang telah diproses dari SIM Card HP server SMS
4. Tahap berikutnya adalah mengirim pesan informasi yang diperoleh
dari proses olah pesan ke nomor pengirim yang didapat dari pesan
tersebut.
30
Untuk tahap proses pengolahan pesan secara umum yang dilakukan
pada sistem Sistem UKM SMS Gateway dapat diperlihatkan seperti pada
gambar diagram alir dibawah ini.
31
Pada proses pengolahan pesan secara umum yang digambarkan pada
gambar diatas, terdapat beberapa proses yang dikerjakan dalam proses olah
pesan tersebut diantaranya yaitu.
32
b. Nilai kembalian “BANK” jika nomor pengirim terdaftar sebagai
anggota yang berstatus sebagai Bank di server SMS.
c. Nilai kembalian “BELUM” jika nomor pengirim belum terdaftar
di server SMS (user belum melakukan registrasi anggota)
33
Proses pengecekan perintah pesan untuk anggota teregistrasi sebagai
UKM yang dilakukan oleh sistem seperti yang diperlihatkan pada diagram
alir diatas yaitu perintah yang diperoleh dari pengambilan 3 digit pertama
dari pesan yang ditampung dalam variabel cmd yaitu terdiri dari.
34
Gambar 3.8 Diagram alir check perintah pesan untuk bank
35
Gambar diagram alir diatas dapat dijelaskan perintah-perintah yang
dikirimkan oleh anggota Bank ke server SMS diantaranya yaitu:
Proses ini menjelaskan alur yang dikerjakan jika user yang mengirim
pesan belum terdaftar pada server SMS. Proses yang dikerjakan yaitu
bermula dari mengecek perintah yang dikirimkan keserver dan mengecek
jenis anggota yang terdapat dari pesan tersebut. Gambaran proses pengolahan
pesan untuk user yang belum melakukan/ terdaftar diserver SMS
diperlihatkan pada gambar diagram alir berikut.
36
Gambar 3.9 Diagram alir check perintah pesan user belum teregistrasi
37
3.3.2 Proses Kirim/ Balas Pesan
1. Diawali dari proses sistem mengecek file .txt yaitu file yang
bernama outbox*.txt yang berada di ../sms/outbox/outbox*.txt
2. Sistem terus melakukan pengecekan terhadap file outbox*.txt, jika
file outbox*.txt tidak ketemu sistem akan terus melakukan
pengecekan selama program aplikasi belum berakhir.
38
3. Jika sistem menemukan adanya file outbox*.txt pada
../sms/outbox/outbox*.txt, sistem akan mengambil file outbox*.txt
tersebut
4. Tahap berikutnya yaitu sistem akan memilah/ mengambil data
informasi dan nomor HP pengirim yang terdapat pada file
outbox*.txt tersebut
5. Setelah proses pengambilan data informasi dan nomor HP pengirim
dari file outbox*.txt, sistem akan melakukan pengecekan terhadap
koneksi HP server dengan PC server SMS, jika tidak terkoneksi
maka sistem akan terus berusaha melakukan koneksi.
6. Jika terkoneksi, maka sistem akan mengambil pesan informasi yang
didapat dari file outbox*.txt kemudian sistem mengirim pesan
tersebut ke nomor HP pengirim yang diperoleh dari file outbox*.txt
tersebut melalui HP server.
7. Tahap terakhir dari setiap proses pengiriman pesan informasi yang
dilakukkan oleh sistem yaitu melakukan penghapusan terhadap file
outbox*.txt yang telah diproses agar informasi yang terdapat pada
file tersebut tidak terkirim kembali.
39
Gambar 3.11 ER Diagram Sistem UKM SMS Gateway
40
9. Pada Kredit yang dicatat adalah IdKredit, NamaKredit, JenisKredit,
BesarKredit, JangkaWaktu, Bunga, Status(Aktif, Tutup) dan Syarat
(Identitas Diri, Copy tagihan listrik bulan terakhir, dll).
10. Pada setiap terjadi transaksi request info kredit yang dilakukan oleh
UKM maka dicatat Tanggal request dan Jam request
41
Tabel-tabel yang dibentuk dalam proses mapping ER Diagram
Sistem UKM tersebut diantaranya yaitu:
42
1. Tabel tbserversms
Berisi data hasil registrasi seluruh anggota pada serverSMS gateway
baik jenisnya UKM maupun BANK
2. Tabel tbukm
Berisi data anggota UKM yang melakukan registrasi pada
serverSMS Gateway
3. Tabel tbtawaran
Berisi data hasil relasi antara Bank ketika melakukan penawaran
informasi Kredit
43
4. Tabel tbbank
Berisi data BANK yang melakukan registrasi pada serverSMS
Gateway
5. Tabel tbkredit
Berisi data informasi kredit yang pernah ditawarkan oleh pihak
Bank.
6. Tabel tbkreditsyarat
Tabel ini berisi data syarat-syarat pendukung dari masing-masing
penawaran informasi kredit
44
7. Tabel tbrequest
Tabel ini berisi data daftar informasi kredit yang pernah di request
oleh setiap anggota UKM
8. Tabel tbsmsmasuk
Tabel ini berisi data-data informasi/ pesan yang pernah dikirimkan
oleh setiap orang baik itu sebagai anggota maupun yang bukan
anggota pada serverSMS Gateway.
9. Tabel tbsmskeluar
Berisi data-data informasi yang diperoleh dari hasil proses sistem
pada serverSMS yang pernah dikirimkan kepada semua anggota
maupun yang bukan anggota pada serverSMS
45
Tabel 3.9 Struktur tabel tbsmskeluar
Tabel tbsmskeluar
Field Tipe Size Ket
id INT 10 NOT NULL, auto_increment,
PRIMARY KEY
kode VARCHAR 15 NOT NULL, PRIMARY KEY
tanggal DATE default '0000-00-00'
jam TIME
nohp VARCHAR 15
pesan VARCHAR 255
46
3.5 PENETAPAN PERINTAH PENGIRIMAN PESAN
Contoh pengiriman:
REG UKM Untuk melakukan Registrasi anggota dengan
jenis anggota sebagai UKM
REG BNK Untuk melakukan registrasi anggota dengan
jenis anggota sebagai BANK
Pengisian Data Anggota
1. Pengisian data UKM
Format pengiriman:
UKM#Namusaha#BidangUsaha#Keuntung#Alamat#ContactPerson
Contoh pengiriman:
UKM#Mitra Abadi#Ternak Ayam#8000000#Jl. Keputih No.2
Surabaya#Ir.Suparno
Contoh pengiriman:
BNK#MANDIRI#Dr.Subroto
47
Tabel 3.13 Perintah Request Informasi oleh anggota UKM
Jenis Perintah Fungsi / keterangan
Request Informasi Kredit
Format Pengiriman:
KRD JenisKredit KategoriKredit BesarKredi
Contoh pengiriman:
KRD HRI DA 8000000 Request info kredit Harian dengan
jumlah diatas 8.000.000
KRD HRI DB 8000000 Request info kredit Harian dengan
jumlah dibawah 8.000.000
KRD MGU DA 10000000 Request info kredit Mingguan dengan
jumlah diatas 10.000.000
KRD MGU DB 10000000 Request info kredit Mingguan dengan
jumlah dibawah 10.000.000
KRD BLN DA 30000000 Request info kredit Bulanan dengan
jumlah diatas 30.000.000
KRD BLN DB 30000000 Request info kredit Bulanan dengan
jumlah dibawah 30.000.000
KRD#BCA#BLN Request info kredit khusus Bank BCA
Request Syarat Kredit
Format Pengiriman:
SRT#NamaBank#JenisKredit#BesarKredit
Contoh pengiriman:
SRT#MANDIRI#BLN#20000000
48
Tabel 3.14 Perintah Pengisian serta Update data oleh pihak BANK
Pengisian Data Kredit Bank
Format pengiriman:
ADD#NmKredit#JenisKredit#BsrKredit#JkWaktu#Bunga
Contoh pengiriman:
ADD#Jangka Panjang#BLN#20000000#3 THN#3%
Pengisian Persyaratan Kredit Bank
Format pengiriman:
SRT#IdKredit#syarat_1#syarat_2#syarat_n
Contoh pengiriman:
SRT#1001#fotocopy tagihan listrik bulan terakhir#tagihan PAM bln
terakhir#identitas diri#penghasilan > 6000000
Update Data Kredit Bank
Format pengiriman:
UPD#NamaKredit#JenisKredit#BesarKredit#JangkaWaktu#Bunga#Id
Kredit
Contoh pengiriman:
UPD#Jangka Panjang#BLN#30000000#4thn#3%#1001
OR
UPD###30000000#4thn##1001
Menutup kredit dan mengunci request dari sever
Format pengiriman:
KRD#IdKredit#keterangan
49
3.6 DESAIN APLIKASI GUI
1. Informasi
Menu ini untuk menampilkan halaman yang berisi informasi
mengenai penggunaan HP/ modem GSM pada sistem. Dalam
halaman ini terdapat tombol koneksi manual untuk perangkap HP
dengan PC server SMS, dan juga terdapat tombol Link untuk
menampilkan form about. Menu ini secara default ditampilkan
ketika aplikasi pertama dijalankan.
2. Banking
Menu ini menampilkan informasi mengenai data Bank yang
terdaftar pada server SMS dan juga data informasi kredit yang
pernah ditawarkan oleh Bank ke server SMS
50
3. UKM
Menu ini untuk menampilkan informasi data UKM yang terdaftar
pada server SMS dan juga untuk menampilkan informasi request
terhadap data kredit yang pernah dilakukan oleh setiap UKM
4. SMS Gateway
Menu ini untuk menampulkan informasi pesan yang masuk/
diterima di server SMS dan informasi pesan keluar serta informasi
Log sistem selama aplikasi berjalan.
6. Keluar
Menu ini digunakan untuk keluar dari program aplikasi yang sedang
berjalan.
51
Daftar menu-menu Link pada sistem aplikasi yang dibuat
ListView yang berisi info tentang
penggunaa HP
52
Informasi request kredit Menampilkan informasi data
oleh UKM UKM yang telah terdaftar
53
berisi info perintah yang digunakan pada
sistem SMS Gateway
Logo dan nama serta versi dari pada software yang dibuat
54
3.7 PEMBUATAN SISTEM
...
GetCursorPos(CurPos);
SetForegroundWindow(Self.Handle);
pmMenuUtama.Popup(CurPos.X,CurPos.Y);
PostMessage(Self.Handle,WM_NULL,0,0);
with TrayIconData do
begin
cbSize:= SizeOf(TrayIconData);
Wnd:= Handle;
uID:= 0;
uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage:= WM_MOUSEMOVE;
55
hIcon:= Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
Application.ProcessMessages;
...
ls.LoadFromFile(ExtractFilePath(Application.ExeName) +
'setting\koneksi.set');
with ZConnection1 do
begin
HostName:= ls.Values['HostName'];
User:= ls.Values['UserName'];
Password:= ls.Values['Password'];
Database:= ls.Values['Database'];
try
Connect;
except
ShowMessage('Koneksi Gagal');
end;
end;
...
56
sudah berjalan server SMS belum terkoneksi dengan HP yang digunakan
pada server SMS. Perintah yang dikerjakan untuk melakukan koneksi HP
dengan PC server SMS yaitu:
RestartAllConnections(@ChangePhoneState,@ChangeSecuritySt
ate,@HandleIncomingSMS);
S4:=GetGammuUnicodeString(sms.SMS[1].Text);
NoHP:=GetGammuUnicodeString(sms.SMS[1].Number)
OlahPesan(GetGammuUnicodeString(sms.SMS[1].Number),S4);
57
ke variabel reg. Adapun perintah pemanggilan fungsi pengecekan
registrasi anggota sebagai berikut.
reg:= CekRegistrasi(no);
58
...
qry:= TZQuery.Create(Self);
qry.Connection:= ZConnection1;
qry.RequestLive:= True;
sSQL:= 'SELECT * FROM tbsmspending WHERE status
="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
kode:= qry.FieldByName('kode').AsString;
no:= qry.FieldByName('nohp').AsString;
pesan:= qry.FieldByName('pesan').AsString;
PesanPending(kode,no,pesan);
end;
qry.Free;
...
if (UpperCase(reg)='UKM') then
begin
cmd:= copy(pesan,0,5);
if (UpperCase(cmd)='UNREG') then
begin
sSQL:= 'SELECT NoReg FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
noreg:= qry.FieldByName('NoReg').AsString;
sSQL:= 'DELETE FROM tbserversms WHERE NoReg="' +
noreg + '"';
ExecQuery(sSQL,qry,True);
balas:= balas + 'Terimakasih..ID Anda telah
dikeluarkan dari keanggotaan pada server UKM
SMS Gateway. untuk sementara Anda tidak bisa
menggunakan layanan ini lagi';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
59
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' +
kode + '","' + FormatDateTime('yyyy-mm-dd',
Now) + '","' + FormatDateTime('hh:nn:ss',
Now) + '","' + no + '","' + balas + '")';
ExecQuery(sSQL,qry,true);
end
else
begin
cmd:= Copy(pesan,0,3);
//jika KRD berarti request info Kredit
if (UpperCase(cmd)='KRD') then
begin
end
//jika INF berarti request info perintah UKM
else if (UpperCase(cmd)='INF') then
begin
end
//jika REG berarti mencoba Registrasi kembali
else if (UpperCase(cmd)='REG') then
begin
....
balas:= balas + 'ID Anda telah terdaftar
sebelumnya dengan Nama Usaha:...
, untuk info ketik: INF';
....
end
//jika UKM berarti input data nggota UKM
else if (UpperCase(cmd)='UKM') then
begin
end
//jika SRT berarti request syarat Kredit
else if (UpperCase(cmd)='SRT') then
begin
end
60
else // selain dari instruksi yang diatas
begin
balas:= balas + 'Maaf!! Perintah yang Anda
Ketik tidak dikenal.. untuk info
ketik: INF';
....
End;
End;
end
else if (UpperCase(reg)='BANK') then
begin
kode:= IntToStr(YearOf(Now)) + IntToStr
(MonthOf(Now)) + IntToStr(DayOf(Now))
+ IntToStr(HourOf(Now)) + IntToStr
(MinuteOf(Now)) + IntToStr
(SecondOf(Now)) + IntToStr
(MilliSecondOf(Now));
cmd:= copy(pesan,0,5);
if (UpperCase(cmd)='UNREG') then
begin
sSQL:= 'SELECT NoReg FROM tbbank WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
noreg:= qry.FieldByName('NoReg').AsString;
sSQL:= 'DELETE FROM tbserversms WHERE NoReg="' +
noreg + '"';
ExecQuery(sSQL,qry,True);
balas:= balas + 'Terimakasih..ID Anda telah
dikeluarkan dari keanggotaan pada server UKM
SMS Gateway. untuk sementara Anda tidak bisa
menggunakan layanan ini lagi';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' +
kode + '","' + FormatDateTime('yyyy-mm-dd',
Now) + '","' + FormatDateTime('hh:nn:ss',
Now) + '","' + no + '","' + balas + '")';
ExecQuery(sSQL,qry,true);
end
else
begin
cmd:= Copy(pesan,0,3);
//jika BNK berarti Input data Anggota BANK
if (UpperCase(cmd)='BNK') then
begin
61
{proses isi data registrasi untuk BANK}
End
//jika ADD berarti input data Kredit BANK
else if (UpperCase(cmd)='ADD') then
begin
End
//jika UPD berarti Update data Kredit BANK
else if (UpperCase(cmd)='UPD') then
begin
End
//jika INF berarti request info Perintah BANK
else if (UpperCase(cmd)='INF') then
begin
End
//jika IDK berarti request ID Kredit BANK
else if (UpperCase(cmd)='IDK') then
begin
End
//jika REG berarti mencoba daftar ulang BANK
else if (UpperCase(cmd)='REG') then
begin
....
balas:= balas + 'Maaf!! ID Anda telah
terdaftar sebelumnya dengan Nama
Perusahaan: .., untuk info ketik: INF';
....
end
//jika SRT berarti input syarat Kredit BANK
else if (UpperCase(cmd)='SRT') then
begin
end
//jika KRD berarti menutup kredit dan kunci request
else if (UpperCase(cmd)='KRD') then
begin
62
End
else //selain perintah u/ anggota BANK diatas
begin
balas:= balas + 'Maaf!! Perintah yang Anda
Ketik tidak dikenal.. untuk info ketik:
INF';
....
End;
End;
End
else if (UpperCase(reg)='BELUM')
begin
....
cmd:= Copy(pesan,0,3);
//jika REG berarti Registrasi Anggota
if (UpperCase(cmd)='REG') then
begin
ja:= Copy(pesan,5,3);
//jika BNK berarti jenis anggota sbg BANK
if (UpperCase(ja)='BNK') then
begin
End
//jika UKM berarti jenis anggota sbg UKM
else if (UpperCase(ja)='UKM') then
begin
end
else //selain UKM dan BNK tidak dikenal
begin
balas:= balas + 'Perintah tidak
dikenal, untuk Daftar ketik: REG
namausaha, namausaha(UKM/BNK) cth: REG
UKM';
....
End;
end
else //selain REG perintah tidak dikenal
begin
balas:= balas + 'Anda belun Registrasi,
untuk Registrasi ketik: REG namausaha,
namausaha(UKM/BNK) cth: REG UKM';
......
End;
End;
63
3.7.7 Fungsi Thread
....
error:=GSM_SendSMSMessage(GSMDevice[num].DeviceID,@MultiS
MS.SMS[j],StrToInt(GatewayINIFile.ReadString('general','W
aktuHabisKirimSMS','30')));
...
DeleteFile(GatewayINIFile.ReadString('general',
'senddir',
ExtractFilePath(Application.ExeName))+sr.Name);
64
BAB IV
Pada bab ini menjelaskan tahap – tahap uji coba sistem yang
merupakan tahap akhir dari proses pembuatan sistem yang telah
dikembangkan. Pengujian sistem dilakukan untuk mengetahui kinerja kerja
sistem beserta kekurangan nya. Pengujian dilakukan melalui beberapa tahap
diantaranya tahap pengujian sistem baik dari segi Hardware, Software, tahap
penerimaan dan pengiriman SMS/ Pesan, penggunaan penyedia layanan,
kinerja kerja sistem secara keseluruhan serta kesalahan – kesalahan yang
mungkin terjadi pada sistem.
65
Pada tampilan awal yang telah berjalan akan diperlihatkan info
HP/ GSM modem yang digunakan pada Server SMS. Tampilan ini
sengaja dibuat default pada menu Informasi, disini supaya bisa
memastikan apakah sistem aplikasi sudah berjalan/ terkoneksi dengan
HP yang tersambung pada Server SMS atau belum. Jika belum maka
langkah yang harus dilakukan yaitu dengan melakukan koneksi secara
manual dengan menekan tombol Restart Koneksi.
66
Gambar 4.3 Tampilan aplikasi pada menu UKM
67
Pada tampilan menu SMS Gateway diperlihatkan informasi pesan
masuk, pesan keluar dan informasi UKM Gateway Log yang
menampilkan log koneksi dengan perangkat HP yang digunakan pada
Server SMS.
68
Icon pada sistem tray aplikasi UMK SMS Gateway
69
proses ini hanya memakan waktu kurang lebih berkisar antara 6 sampai
15 detik.
70
User Server SMS
Kasus 2
1. Mengirim pesan = 2. Pesan berisi = ‘UKM#Maju
‘UKM#Maju Raya#Usaha Raya#Usaha
Kerupuk#15000000#Jl. Kerupuk#15000000#Jl. Mulyosari
Mulyosari No.46 No.46 Surabaya#Sumarno’
Surabaya#Sumarno’ diterima.
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-
GET> Terimakasih Anda telah
bergabung di sistem -UKM
GATEWAY- sebagai registrasi
UKM. Nomor registrasi Anda :
20071126088, utk info ketik: INF’
8. Pesan berisi = ‘<UKM-GET>
Terimakasih Anda telah
bergabung di sistem -UKM
GATEWAY- sebagai
registrasi UKM. Nomor
registrasi Anda :
20071126088, utk info ketik:
INF’ diterima.
Kasus 3
1. Mengirim Pesan = ‘REG 2. Pesan berisi = ‘REG BNK’
BNK’ diterima.
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-
GET> Isi data Anda
ketik:BNK#NamaBank#ContactPe
rson,
cth:BNK#MANDIRI#Dr.Subroto’
71
User Server SMS
8. Pesan berisi = ‘<UKM-GET> Isi
data Anda
ketik:BNK#NamaBank#ContactP
erson,
cth:BNK#MANDIRI#Dr.Subroto’
diterima.
Kasus 4
1. Mengirim pesan = 2. Pesan berisi =
‘BNK#MANDIRI#Dr.Subroto’ ‘BNK#MANDIRI#Dr.Subroto’
diterima.
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-GET>
Terimakasih Anda telah bergabung di
sistem -UKM GETWAY- sebagai
registrasi BANK. Nomor Registrasi
Anda: 20071123235723, utk info
ketik: INF’
8. Pesan berisi = ‘<UKM-GET>
Terimakasih Anda telah
bergabung di sistem -UKM
GETWAY- sebagai registrasi
BANK. Nomor Registrasi Anda:
20071123235723, utk info ketik:
INF’ diterima.
Aksi Lain
Kasus lain 1. Perintah kurang lengkap, Balas pesan
= ‘<UKM-GET> Untuk dapat
menggunakan layanan ini, Silahkan
Daftar identitas usaha Anda terlebih
dahulu!. Untuk Daftar ketik: REG
UKM’
2. Perintah salah, balas pesan = ‘<UKM-
GET> ID Anda belum terdaftar. Untuk
dapat menggunakan layanan ini,
Silahkan Daftar identitas usaha Anda
terlebih dahulu!. Untuk Daftar ketik:
REG UKM’
3. Pesan balasan diterima.
72
Tabel 4.2 Layanan Request Informasi
Aksi Normal
UKM Server SMS BANK
Kasus 1
1. Mengirim pesan 2. Pesan berisi : ‘krd bln
: ‘krd bln da da 8000000’ diterima
8000000’ 3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi =
‘<UKM-GET>
MANDIRI,Jangka
Panjang,20000000,2th
n,2.5%,Dr.Subroto,+6
281361276182#’
8. pesan berisi:
‘<UKM-GET>
MANDIRI,Jangk
a Panjang,
20000000,2thn,2.
5%,Dr.Subroto,+
6281361276182#
’
Kasus 2
1. Mengirim pesan 2. Pesan berisi : ‘krd bln
: ‘krd bln da da 50000000’
50000000’ diterima
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. kirim pesan berisi =
‘<UKM-GET> krd
bln da 50000000’
8. Pesan berisi:
‘‘<UKM-GET> krd
bln da 50000000’
diterima
73
UKM Server SMS BANK
9. Balas pesan berisi:
‘<UKM-GET>
Silahkan
tunggu..selama Server
mendapat Reply dari
10. pesan berisi: Bank’
‘<UKM-GET>
Silahkan
tunggu..selama
Server
mendapat
Reply dari
Bank’ diterima
Kasus 3
1. Mengirim pesan: 2. Pesan berisi :
‘srt#Mandiri#bln ‘srt#Mandiri#bln#200
#20000000’ 00000’ diterima
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi =
‘<UKM-GET>
fotocopy tagihan
listrik akhir bulan,
Identitas diri,
penghasilan >
8. pesan berisi: 8000000/bln, tagihan
‘<UKM-GET> PAM akhir bulan’
fotocopy tagihan
listrik akhir
bulan, Identitas
diri, penghasilan
> 8000000/bln,
tagihan PAM
akhir bulan’
diterima
74
UKM Server SMS BANK
Aksi Lain
Kasus yang lain 1. Parameter besar kredit
bukan angka. Balas
pesan = ‘<UKM-
GET> Maaf,
Parameter Besarkredit
pada pesan bukan
merupakan angka, cth
perintah yg valid:
KRD HRI DA
8000000’
3. Info kredit tidak ada.
Balas pesan =
‘<UKM-GET>
Untuk sementara
pihak BANK belum
menawarkan jenis
kredit yang anda
request’
4. Perintah salah. Balas
pesan = ‘Perintah
tidak dikenal.
Silahkan ketik INF
untuk info perintah’
5. Id telah terdaftar.
Balas pesan = ‘ID
Anda telah terdaftar
sebelumnya dengan
Nama Usaha: ..untuk
info ketik: INF’
75
Tabel 4.3 Layanan pemberi informasi
Aksi Normal
BANK Server SMS
Kasus 1
1. Mengirim pesan : ‘Add#Jangka 2. Pesan berisi : ‘Add#Jangka
Panjang#bln#20000000#3THN# Panjang#bln#20000000#3THN#
3%#Aktif’ 3%#Aktif’ diterima
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-
GET> Terimakasih. ID Kredit
Perusahaan Anda :
200711260414, Input syarat
Kredit ketik:
SRT#IdKredit#Syarat.
Cth:SRT#1001#syarat_1#syarat
8. Pesan berisi = ‘<UKM-GET> _2#syarat_n’
Terimakasih. ID Kredit
Perusahaan Anda :
200711260414, Input syarat
Kredit ketik:
SRT#IdKredit#Syarat.
Cth:SRT#1001#syarat_1#syarat
_2#syarat_n’ diterima
Kasus 2
1. Mengirim pesan : 2. Pesan berisi :
‘UPD###30000000##3%##Ope ‘UPD###30000000##3%##Ope
n#200711260414’ n#200711260414’ diterima
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-
GET> Terimkasih. data dengan
ID Kredit : 200711260414 Telah
berhasil di Update’
76
BANK Server SMS
Kasus 3
1. Mengirim pesan : 2. Pesan berisi :
‘SRT#200711260414#Copy ‘SRT#200711260414#Copy
KTP#Rekenig listrik bulan KTP#Rekenig listrik bulan
terakhir#penghasilan > terakhir#penghasilan >
10000000’ 10000000’ diterima
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-
GET> Terimakasih atas
kelengkapan data2 pendukung
kredit perusahaan Anda.’
8. Pesan berisi : ‘<UKM-GET>
Terimakasih atas kelengkapan
data2 pendukung kredit
perusahaan Anda.’ diterima
Kasus 4
1. Mengirim pesan : ‘idk’ 2. Pesan berisi : ‘idk’ diterima
3. Cek registrasi
4. Cek Perintah
5. Query ke database
6. Query diterima
7. Balas pesan berisi = ‘<UKM-
GET> BLN,20000000:
200711260414# ’
8. Pesan berisi : ‘<UKM-GET>
BLN,20000000:200711260414#
’ diterima
77
BANK Server SMS
Aksi Lain
Kasus yang lain 1. Pesan kurang lengkap. Balas
pesan = ‘<UKM-GET> Maaf!!
Data yg anda kirim kurang
lengkap!. Untuk info ketik :
INF’
2. Telah terdaftar sebelumnya.
Balas pesan = ‘<UKM-GET>
Maaf!! ID Anda telah terdaftar
sebelumnya dengan Nama
Perusahaan: .., untuk info ketik:
INF’
3. ID Kredit tidak ada. Balas pesan
= ‘<UKM-GET> Mohon Maaf!!
Sampai sekarang Anda belum
menawarkan/memiliki
IdKredit!!’
4. Perintah tidak dikenal. Balas
pesan = ‘<UKM-GET> Maaf!!
Perintah yang Anda Ketik tidak
dikenal.. untuk info ketik: INF’
5. Pesan balasan diterima.
1. Server SMS
a. HP Nokia 5110 dengan kartu AS, XL bebas
b. Komputer Pentium III 800MHz, RAM 256, dengan database
MySQL 4.1.12
2. User / Anggota
a. HP yang digunakan
i. Nokia 8210
ii. Nokia 6100
iii. Nokia 2100
iv. Nokia 3310
v. Motorola
78
vi. Siemens
vii. Sony Ericson
Pada aplikasi Sistem UKM SMS Gateway dibentuk tiga file Log
yang digunakan untuk memonitor proses / aksi-aksi yang terjadi ketika
aplikasi Sistem UKM SMS Gateway dijalankan. Ketiga file Log yang
dibentuk diantaranya yaitu.
1. File Terima1.log
2. File Kirim1.log
3. File ukmsmsgateway.log
79
4.5.1 File Terima1.log
80
4.5.3 File ukmsmsgateway.log
Gambar 4.10 File Log monitor Sistem UKM SMS Gateway berjalan
81
---Halaman ini sengaja dikosongkan---
82
BAB V
PENUTUP
5.1 KESIMPULAN
Berdasarkan perancangan, pembuatan dan pengujian sistem yang
dilakukan, dapat diambil beberap kesimpulan sebagai berikut :
1. server SMS gateway dapat melayani permintaan informasi kredit
UKM yang dilakukan oleh setiap anggotanya.
2. permintaan informasi kredit UKM bisa diberikan oleh server SMS
dalam bentuk Bank tertentu saja maupun seluruh Bank yang
menyediakan informasi kredit tersebut.
3. Proses layanan informasi kredit yang diberikan oleh server SMS
Gateway menyangkut namakredit,besarkredit,jangkawaktu,bunga
kredit dan contact person serta nomor Bank yang bisa dihubungi.
4. server SMS Gateway tidak membutuhkan operator dalam layanan
memberi dan mencari informasi.
5. Proses berjalan dan kerja aplikasi Sistem UKM SMS Gateway dapat
disimpan dalam file Log baik pesan masuk, keluar maupun Log dari
program aplikasi yang sedang berjalan.
5.2 SARAN
Layanan Penyedia Informasi Kredit UKM Berbasis SMS Gateway
yang di implementasikan hanya pada bidang penyediaan informasi kredit
usaha. Tetapi dalam implementasi tersebut masih ada kekurangan-
kekurangan nya sehingga perlu adanya saran penyempurnaan sistem.
Adapun saran-saran tersebut antara lain.
1. Penggunaan perintah masih bersifat statis, diharapkan untuk
pengembangan bisa membuat perintah pesan secara dinamis dimana
walaupun kode perintah dirubah dalam database dengan kode yang
baru sistem tetap mengerti apa yang harus dikerjakan.
2. Pada proses penerimaan maupun pengiriman pesan informasi yang
dilakukan pada sistem aplikasi UKM SMS Gateway masih melalui
satu unit HP sehingga untuk proses penerimaan pesan yang terlalu
banyak dapat memperlambat proses pemberian informasi kepada
yang merequest informasi, saran diharapkan untuk pengembangan
dapat menggunakan dua HP dimana satu khusus untuk menerima
pesan dan yang satu lagi untuk mengirim pesan.
83
---Halaman ini sengaja dikosongkan---
84
DAFTAR PUSTAKA
[1] Alam, Agus J, M., 2003. Belajar Sendiri Mengelola Database dengan
Borland Delphi 7, Elek Media komputindo:Jakarta.
[2] Basofi, Arif., Sistem Basis Data, http://lecturer.eepis-its.edu/~ariv
[3] GAMMU Readme version 10.10.2003, GAMMU [www.mwiacek.com]
[4] K, Chandra, Ian., 2003. Nokia PC Suite 5 dengan Oxygen Phone
Manager II, Elek Media Komputindo:Jakarta
[5] Kadir, Abdul., 1999, Konsep dan Tuntunan Praktis Basis Data, Penerbit
Andi, Yogyakarta,
[6] Kroenke, M.D., Database Processing, Prentice Hall International, Inc.,
1998
[7] Martina, Inge, Ir., Pemrograman Internet Dengan Delphi, Penerbit Elex
Media Komputindo, Jakarta, 2002.
[8] Nogroho, Widodo, 2001, Tip dan Trik Pemrograman Delphi, Penerbit
Elek Media Komputindo: Jakarta
[9] Zakaria, Markus,Teddy;Widiadhi,Josef., 2006. Aplikasi SMS Untuk
Berbagai Keperluan, Informatika:Bandung.
85
BIOGRAFI PENULIS
Penulis lahir di Babah Krueng, Peureulak, NAD, pada
tanggal 11 Maret 1982. Sebagai anak ke tiga dari tujuh
bersaudara dari seorang ibu bernama Painem dan ayah
bernama Muhammad Jamil. Dan berikut ini adalah
identitas tentang penulis :
2
GAMMU README
etc.
----------------------------------------------------------------
3
A. * these things can be done without anything (it will be done
everything
to make them):
* MMS
* giving support for more formats
* writing really usefull GUI
* ending win32 dll
* uploading some things over WAP
* AT modem emulator
* DKU-5 driver
* Symbian support
* SyncML
* .... (other)
* this things can be done after getting some hardware help:
* Nokia:
* N3410 Java support
* N5510 radio/MP3 support
* for Series 40 getting/setting/sending PustToTalk
settings, support for some types of files and MMC
(3300, 6230, etc.), probably some other things
connected with OMA, shutdown bitmap
* Other:
* more EMS features: polyphonic ringtones, more text
features, etc.
* all Siemens features
* all Motorola features
* .... (other)
----------------------------------------------------------------
Q. Where to get latest versions and support ?
4
UPDATE: there are now some additional projects based on
Gammu:
* Wammu: graphic manager using Python
http://freshmeat.net/projects/wammu/
* Snofs: software to mount phone filesystem under some Linux
directory (something like Phone
Browser in PC Suite)
http://snofs.sourceforge.net/
----------------------------------------------------------------
Q. How to compile it ?
A. Method 1:
* under Unix (Linux)
first do "./configure" and later use "make" or "make
makelib"
5
TIP: gammu.bpr was created using "Tools/Visual C++
Project Conve.." and little modified
later.
* under Borland C++ command line tools
go into gammu/bcc and check if there is subdirectory
"output" (if not, create it). Then make "make -
fgammu.mak" from command line.
A. compilers
* MS Visual C++ 6.0
* MS Visual C++ 7.0 (.NET)
go to the shop ;-).It's commercional software.
* MS Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/
* MS Visual C++ Express
search on microsoft.com
* compilers for Unix (Linux) like gcc or kgcc (for free)
available in Net and in Linux distributions included into
CD for many newspapers. Installation depends on
distribution.
* DJGPP (for free)
see http://www.midpec.com/djgpp/ (you have many info there)
OR
6
libraries
* MySQL
www.mysql.com
* MS Platform SDK
www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-
full.htm
Please note, that will need probably MS Internet Explorer
with enabled ActiveX to download it. Platform SDK is added
to MSDN subscriptions too
* BlueZ
www.bluez.org
----------------------------------------------------------------
Q. What are known problems and weak things of current version ?
A Nokia section
1.3210
* 2'nd ringtone can't be set
Well, I don't know, how to avoid it. Use --nokiacomposer
to enter
manually ringtone.
2.3310/3315
* names from phonebook are empty.
To avoid it you need to have higher than 4.06 firmware
in phone.
7
5.7110
* can't get binary ringtones from phone.
upgrade firmware in phone. Last one is 5.01 and it can
do it.
8
10.all DCT3 phones
* Phone (or rather Gammu) doesn't inform about CB (Cell
Broadcast) By default this feature is disabled (see
option in config.h), because some people had problems
with it - their phones didn't answer for command
enabling this feature or enabled after (too) long
timeout. I personally didn't have such problems. If want,
test it. If works, be happy :-)
11.DCT3 phones (3330, 3410, 5210, 5510, 62xx, ...) with WAP
settings It's very messy (random) in these phones and in
some situations it can give incorrect results (like
mixing sets from different sets).
14.DCT4 phones
* I don't have all info about calendar notes included in
Gammu backup and output When make ./configure, use --
newcalendar. If this works for Your phone, please report
model and firmware version.
AT section
1.Siemens M20
* Gammu read incorrectly SMS with alphanumeric numbers
Well, M20 doesn't have correctly support for such numbers
at all. Gammu tries to avoid it and construct SMS
from such incorrect frame. Many times it ends with
success in 99%
SonyEricsson
1.T310
* I can't backup Notes & I don't have numbers in PhoneCall
ToDo Phone firmware issues. Thanks SE
---------
9
Samsung
1.S300
* Only GIF pictures supported. Transfer pictures using --
setlogo PICTURE, leave location parameter as 0. Data
upload from phone not supported, --getbitmap and --
getlogo only show location info.
A. 1.Nokia DCT3
(3210|3310|3330|3390|3410|5110|5110i|5130|5190|5210|5510|61
10|6130|6150|6190|8210|8250|8290|8850|8855|8890
6210|6250|7110
9110) and compatible.
2.Nokia DCT4
(1100|1100a|1100b|3100|3100b|3108|3200|3200a|3300|3510|3510
i|3530|3589i|3590|3595|5100|5140|6100|6200|6220|6230|6310|6
310i|6385|6510|6610|6610i|6800|6810|6820|7210|7250|7250i|76
00|8310|8390|8910|8910i3320) and compatible
5.Falcom A2D-1
6.IPAQ
8.OBEX devices
10
9.Sony Ericsson
Tested with T310 (or rather T300 with R3B firmware from
T310), and R320s. Connections can be at* (serial), irda*
and blue*. Supported as AT or OBEX device above. New
supported features are in development now.
10.Samsung
11
A. Here are some people, who somehow helped in this project.
Probably not everyone is mentioned. If you think, you're
missed, please let us know:
* all people developing Gnokii (some ideas are from it) like
Pavel Janik, Pawel Kot, Manfred Jonsson, ... (see CREDITS
from gnokii)
* all people responsible for MyGnokii (Gammu is based on it
too) like Gabriele Zappi, Ralf Thelen, .... (see CREDITS
from mygnokii)
* Marcin Wiacek - author of all this mess ;-)
* Markus Plail & Tibor Harsszegi - for DCT4 help
* Frederick Ros - 5210 help
* Jan Kratochvil - AT commands
* Walek - fixes, progress in many things
* Marcel Holtmann - Bluetooth tests
* Michal Cihar - general discussions, tries into making one
big and good GSM manager (many changes and suggestions),
Alcatel support
* Ondrej Rybin & Tomasz Motylewski & Tom Nelson - hardware
help
* Joergen Thomsen - SMS daemon
* Claudio Matsuoka - Samsung support, some hacks and fixes
----------------------------------------------------------------
Q. What file formats are supported ?
12
1. universal FBUS/MBUS. The best, because should
work with each phone (of course you need
correct connector for it) in one or
second protocol. Sometimes called DAU9P
(it was name of original universal cable
for 61xx/51xx). Same universal cables
have manual switch. IMHO, it's not
necessary
2. MBUS only. Required for some concrete phones
to allow them work with
this protocol (like my 6310i - it didn't
want to work in MBUS with my universal
FBUS/MBUS cable without switch).
3. FBUS only. IMHO, wasting money.
4. AT/FBUS cable (originally called DLR3 or
DLR3P). Will not work with older phones
(like 51xx/61xx) even in FBUS. You can
use it with 62xx/63xx/71xx and work in AT
or FBUS mode. Good choice, if won't use
MBUS protocol and have modern model.
13
1.compile kernel with USB and Bluetooth
(don't use BT in USB section !)
2.load kernel driver ("modprobe hci_usb")
3."hciconfig hci0 up" enables dongle
4.in /etc/bluetooth create "givepin" file.
It should be
executable ("chmod a+x
/etc/bluetooth/givepin")
5.write inside:
#!/bin/sh echo "PIN:5432"
6.in /etc/bluetooth/hcid.conf set
"pin_helper" to
"/etc/bluetooth/givepin;"
7."hcid" (will send options from hcid.conf
to BT device)
8.set "device" in gammurc to phone address
(see "hcitool
scan" for it) and protocol to
"bluephonet" or similiar
9.during first connection give PIN 5432 in
phone
A. Using cable: Get serial cable for the appropriate model, plug
it into the phone and in a free serial port
of the PC. In gammu, set the correct port
("COM1:" .. "COM9:" in Windows,
"/dev/ttyS*" in Linux).
Set"connection=at115200" (or lower) and
"model=at". You can also try "model=obex".
14
kind of software, at half way between HARDWARE, that is the
physical, electronic part of the computer, and the SOFTWARE,
the programs which allow the hardware to work; the firmware
is a kind of software, "fixed" on the hardware, and it
cannot be modified by users.By "normal" users, at least.
Actually, it IS possible to modify the firmware, to upgrade
it to newest releases, but it requires a technical skill
which not all people have.Usually, only the phone
manufacturer can upgrade the firmware, using special
devices. So, if you want to upgrade your firmware, you
should bring your phone to your dealer, and wait for him to
give the phone to the manufacturer, which, often after
"months" ;-)))), will give you back your phone, upgraded,
and your wallet, without a copule of 20$ banknote... BUT, it
is also possible to do all this mess by yourself: you can
find on Internet the required hardware, a Flasher Device
(which could often cost MORE than 40$!), a flasher program,
and the latest release of the firmware.. which is
copyrighted by the phone manufacturer, and so COULDN'T be
distributed on the Net.... On Gammu site you can find a lot
of info about Mobile Phones Firmwares, BUT nothing about
flashing: you should use a search engine using keywords like
"flasher", "firmware", "upgrade", "mobile phone" etc.
----------------------------------------------------------------
Q. Can Gammu backup voice tags (in meaning: sound saved in phone
as voice record) ?
A. The best is always the most simple device. So, I think that
using Nokia 3310 or 3410 can be very good choice. They have
removed some SMS bugs (for example, 3330 has buggy firmware
- you have to flash it with 3310 firmware to avoid any
problems). Especially 3410 is interesting - has got LiIon
battery.
More expensive Nokia phones (with own SMS memory) are more
complicated and using them is not always good idea (of
course, Gammu can do it).
15
Q. What phone could be recommended by Gammu author(s) ?
(generally) (19.11.02)
When want WAP, GPRS, buy rather 6310i than 6310. Remember,
that firmware inside has still many small bugs and it
possible, phone can go often to service to flashing. Some
things are still not useable (like CB messages - can't
change tone to it), no netmon in this moment. This family
has Bluetooth.
Phones with colour display are not very good for me. IMHO,
I will wait some time, until they will have all problems
removed.
Siemens:
Very good AT support, very stable with it, available netmon
and many, many other functions (not like with Nokia).
Worse user interface than Nokia.
Panasonic:
GD96 - weak battery, many, many functions. Nice for many
people.
Ericsson:
T65 - very small, good, if you will like its' interface.
T68i - MMS.
----------------------------------------------------------------
Q. How to make national version of Gammu ?
A. 1. go into docs/docs/locale
16
2. rename gammu_us.txt to gammu_XX.txt (where XX is language
ID)
3. open gammu_XX.txt in editor supporting Unicode (in win32
Notepad)
4. to each "Fxxxx = "text"" line add "Txxxx = "text"" line
5. send to me updated file
----------------------------------------------------------------
Q. Where can I find additional info ?
A. * www.mwiacek.com
* manual for Nokia netmonitor
* info about firmware in Nokia phones (changes, bugs, ...)
* info about protocols in Nokia phones
* default ringtones and logos from Nokia phones
* www.gnokii.org
* another "free" manager for GSM phones. It was core for
first manager created by Marcin Wiacek (the main reason
of creating it was eliminating Gnokii problems) called
MyGnokii. Gammu was created from rewriting
MyGnokii. You can now compare quality in Gnokii and
Gammu meaning ;-)
* http://gsm-technology.com
* GSM DATA AND SERVICE CABLES
* GSM EQUIPMENT & HARDWARE
* FREE FLASHES, LOGO'S, RINGTONES
* FREE INSTRUCTIONS, SCHEMES
* http://zope.achterklap.nl:8080/nokia/
* reversing DCT3 phones
----------------------------------------------------------------
Q. Nokia and other manufactures provides original software. What
original applications can be replaced with Gammu ?
A. Nokia:
* Nokia Cellular Data Suite 2.0 - 3.0 (N5110, N6110)
* PC-Suite for N5210
* PC-Suite 4.06 (N6210)
* PC-Suite 4.3 - 4.88 (DCT4 mono: N6310, N6310i, N6510,
N8310, N8910)
* PC-Suite 5.0 - 5.1 (DCT4 color: N5100, N6610, N6800, N7210)
* PC-Suite 5.12 (N6800)
* PC-Suite 5.16 (N7210)
----------------------------------------------------------------
Q. Does Gammu support Chinese SMS ?
17
work, there will be required some modifications of sources.
Please contact authors.
18
continuous sessions or they're more hidden). Welcome in new
connected world :-(
----------------------------------------------------------------
Q. How to manage playlists in 6230 ?
2. gammu --getfilesystem
19
---Halaman ini sengaja dikosongkan---
20
UNIT Untama.pas
unit Untama;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, Gammu, Buttons, ExtCtrls, Gauges, StdCtrls, ComCtrls,
ImgList,
Menus, ShellAPI, Grids, DBGrids, ZConnection, DB,
ZAbstractRODataset,
ZAbstractDataset, ZDataset, DateUtils, StrUtils, IniFiles,
jpeg;
type
TForm1 = class(TForm)
ListView1: TListView;
Shape1: TShape;
ImageMenu: TImageList;
ImageTab: TImageList;
pmMenuUtama: TPopupMenu;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
keluar1: TMenuItem;
Informasi1: TMenuItem;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
GroupBox9: TGroupBox;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DBGrid3: TDBGrid;
DBGrid6: TDBGrid;
TmSendSMS: TTimer;
ZConnection1: TZConnection;
GroupBox8: TGroupBox;
DBGrid7: TDBGrid;
TmMsgPending: TTimer;
btnRestartKoneksi: TButton;
gbInbox: TGroupBox;
lvInbox: TListView;
gbOutbox: TGroupBox;
lvOutbox: TListView;
gbLog: TGroupBox;
lvLog: TListView;
sbStatus: TStatusBar;
gbInfoPonsel: TGroupBox;
lvInfoAlat: TListView;
btnAbout: TButton;
Image1: TImage;
21
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure keluar1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift:
TShiftState; X,
Y: Integer);
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
procedure Informasi1Click(Sender: TObject);
procedure ListView1Click(Sender: TObject);
procedure TmSendSMSTimer(Sender: TObject);
procedure keluar(frm: HWND);
procedure btnRestartKoneksiClick(Sender: TObject);
procedure lvLogColumnClick(Sender: TObject; Column:
TListColumn);
procedure lvLogCompare(Sender: TObject; Item1, Item2:
TListItem;
Data: Integer; var Compare: Integer);
procedure InfoAlat();
procedure TmMsgPendingTimer(Sender: TObject);
procedure btnAboutClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
TrayIconData: TNotifyIconData;
procedure ShowPopUpMenu();
procedure SembunyiTab();
end;
TSendSMSThread = class(TThread)
public
procedure Execute; override;
end;
var
Form1: TForm1;
SendSMSThread: TSendSMSThread;
bolehjalan: Boolean;
const
MODEMNUM = 2;
implementation
{$R *.dfm}
//==============================================================
procedure TForm1.ShowPopUpMenu();
{ @Deskripsi : Fungsi untuk menampilkan menu pada sistem tray
-------------------------------------------------------------}
var CurPos: TPoint;
begin
22
GetCursorPos(CurPos);
SetForegroundWindow(Self.Handle);
pmMenuUtama.Popup(CurPos.X,CurPos.Y);
PostMessage(Self.Handle,WM_NULL,0,0);
end;
//==============================================================
procedure TForm1.SembunyiTab();
{ @Deskripsi : Fungsi untuk menyembunyikan Tabular
-------------------------------------------------------------}
begin
TabSheet1.TabVisible:= False;
TabSheet2.TabVisible:= False;
TabSheet3.TabVisible:= False;
TabSheet4.TabVisible:= False;
TabSheet5.TabVisible:= False;
end;
//==============================================================
procedure TForm1.FormShow(Sender: TObject);
{ @Deskripsi : perintah yang dikerjakan ketika form ditampilkan
-------------------------------------------------------------}
begin
SembunyiTab;
TabSheet1.TabVisible:= True;
end;
//==============================================================
procedure TForm1.FormCreate(Sender: TObject);
{ @Deskripsi : perintah yang dikerjakan pada saat proses form
dibuat
-------------------------------------------------------------}
var
i: integer;
ls: TStringList;
buffer : array[1..100] of char;
begin
if (CreateMutex(nil, false, 'UKM_SMSGateway') = 0) or
(GetLastError = ERROR_ALREADY_EXISTS) then
begin
if (MessageBox(Self.Handle,'Aplikasi sudah berjalan. Apakah
ingin menjalankannya lagi ?',
'Konfirmasi',MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) =
IDNO) then halt;
end;
ReceivedNum := 0;
SentOKNum := 0;
SentWrongNum := 0;
SMSPrice := 0;
// membaca settingan yang ada pada file
// “ukm_sms.ini”
GatewayIniFile :=
TIniFile.Create(ExtractFilePath(Application.ExeName)+'ukm_sm
s.ini');
23
begin
cbSize:= SizeOf(TrayIconData);
Wnd:= Handle;
uID:= 0;
uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage:= WM_MOUSEMOVE;
hIcon:= Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
Application.ProcessMessages;
ls:= TStringList.Create;
//==============================================================
procedure TForm1.FormDestroy(Sender: TObject);
{ @Deskripsi : perintah yang dikerjakan ketika form dimusnahkan
(aplikasi di tutup)
-------------------------------------------------------------}
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
Application.ProcessMessages;
Application.Terminate;
24
end;
//==============================================================
procedure TForm1.keluar1Click(Sender: TObject);
{ @Deskripsi : Fungsi untuk keluar dari program (aplikasi)
-------------------------------------------------------------}
begin
Application.Terminate;
end;
//==============================================================
procedure TForm1.FormMouseMove(Sender: TObject; Shift:
TShiftState; X,
Y: Integer);
{ @Deskripsi : Fungsi untuk mendeteksi mouse di klik pada icon
yang ada pada sistem tray
-------------------------------------------------------------}
begin
if X= 517 then // klik kanan tunggal
ShowPopUpMenu()
else if X= 515 then // klik kiri
Self.Show;
end;
//==============================================================
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
{ @Deskripsi : Fungsi untuk menyembunyikan form pada sistem
tary ketika tombol close di klik
-------------------------------------------------------------}
begin
CanClose:= false;
Form1.Hide;
end;
//==============================================================
procedure TForm1.Informasi1Click(Sender: TObject);
{ @Deskripsi : perintah yang dikerjakan ketika menu informasi
di klik yang ada pada icon sistem tray
-------------------------------------------------------------}
begin
Form1.Show;
SembunyiTab;
TabSheet1.TabVisible:= True;
end;
//==============================================================
procedure TForm1.ListView1Click(Sender: TObject);
{ @Deskripsi : Fungsi yang dikerjakan ketika menu-menu pada
form utama di pilih
-------------------------------------------------------------}
begin
case ListView1.ItemIndex of
0 : begin
SembunyiTab;
TabSheet1.TabVisible:= True;
end;
1 : begin
SembunyiTab;
25
TabSheet2.TabVisible:= True;
end;
2 : begin
SembunyiTab;
TabSheet3.TabVisible:= True;
end;
3 : begin
SembunyiTab;
TabSheet4.TabVisible:= True;
end;
4 : begin
SembunyiTab;
TabSheet5.TabVisible:= True;
end;
5: Keluar(Self.Handle);
end;
end;
//==============================================================
procedure TForm1.TmSendSMSTimer(Sender: TObject);
{ @Deskripsi : fungsi untuk pengecekkan SMS yang akan dikirim
keluar
-------------------------------------------------------------}
begin
if SendSMSThread.Suspended then
SendSMSThread.Resume;
TmSendSMS.Interval:= 2000;
end;
//==============================================================
procedure TSendSMSThread.Execute;
{ @Deskripsi : fungsi Threading untuk pengiriman SMS keluar
-------------------------------------------------------------}
var
FoundFile,WasSearch,found : Boolean;
FoundNumber : Boolean;
sr : TSearchRec;
FileAttrs,num,retries : Integer;
i,j,z : word;
S : String;
S2 : AnsiString;
F : TextFile;
SendText,Temp,SendNumber : array[1..5000] of char;
MultiSMS : GSM_MultiSMSMessage;
error : GSM_Error;
CurrentDate,CurrentTime : TDateTime;
begin
error:=ERR_UNKNOWN;
WasSearch:=false;
FileAttrs:=faAnyFile;
num:=1;
while not Terminated do
begin
found:=false;
while true do
begin
if (GSMDevice[num].Used) and
(GSMDevice[num].Connected) and
26
(GatewayIniFile.ReadBool('modem'+inttostr(num),
'Kirim', false) = True) then
begin
found:=true;
break;
end;
num:=num+1;
if num>MODEMNUM then
begin
num:=1;
break;
end;
end;
if found then
begin
FoundFile:=false;
if WasSearch then
begin
if FindNext(sr) = 0 then
begin
FoundFile:=true;
end else
begin
FindClose(sr);
WasSearch:=False;
end;
end else
begin
// mengambil informasi yang ada pada file
// outbox*.txt untuk dikirim keluar
if FindFirst(GatewayINIFile.ReadString('general',
'senddir',
ExtractFilePath(Application.ExeName))+'outbox*.txt',
FileAttrs, sr) = 0 then FoundFile:=true;
end;
If foundfile then
begin
AssignFile(F, GatewayINIFile.ReadString('general',
'senddir', ExtractFilePath(Application.ExeName))+sr.Name);
Reset(F);
Readln(F, S);
Readln(F, S2);
Readln(F, retries);
CloseFile(F);
27
while i<strlen(PChar(S2)) do
begin
//Remi wanted converting ~ to #10
if (Temp[i*2+2] = chr(0)) and (Temp[i*2+1] = '~') then
begin
SendText[i*2+1]:=chr(0);
SendText[i*2+2]:=chr(10);
end else
begin
SendText[i*2+1]:=Temp[i*2+2];
SendText[i*2+2]:=Temp[i*2+1];
end;
i:=i+1;
end;
SendText[i*2+1]:=chr(0);
SendText[i*2+2]:=chr(0);
GSM_MakeMultiPartSMS(@SendText,i,UDH_NoUDH,GSM_Coding_Defaul
t,-1,0,@MultiSMS);
if Ord(MultiSMS.Number) > 1 then
begin
MultiSMS.Number:=chr(0);
GSM_MakeMultiPartSMS(@SendText,i,UDH_ConcatenatedMessages,GS
M_Coding_Default,-1,0,@MultiSMS);
end;
if Ord(MultiSMS.Number) <=
StrToInt(GatewayINIFile.ReadString('general',
'SMSNumber','1')) then break;
i:=i-1;
SendText[i*2+1]:=chr(0);
SendText[i*2+2]:=chr(0);
end;
CurrentDate:=Date;
CurrentTime:=Time;
28
Items.Item[Items.Count-
1].SubItems.Add(SearchPBKEntry(S));
Items.Item[Items.Count-
1].SubItems.Add('1/'+IntToStr(Ord(MultiSMS.Number)));
end;
//tambahkan info ke file log
if GatewayIniFile.ReadBool('modem'+inttostr(num),
'PakeLogKirim', false) = True then
begin
{$I-}
AssignFile(F,
GatewayIniFile.ReadString('modem'+inttostr(num),
'LogKirim',ExtractFilePath(Application.ExeName)+'Kirim'+intt
ostr(num)+'.log'));
Append(F);
if (IoResult <> 0) then Rewrite(F);
if IOResult <> 0 then
begin
AddTextToGatewayLog(num,'Resetting LogKirim modem
pada opsi ke standar');
GatewayIniFile.WriteString('modem'+inttostr(num),
'LogKirim',ExtractFilePath(Application.ExeName)+'Kirim'+intt
ostr(num)+'.log');
AssignFile(F,
GatewayIniFile.ReadString('modem'+inttostr(num),
'LogKirim',ExtractFilePath(Application.ExeName)+'Kirim'+intt
ostr(num)+'.log'));
Append(F);
if (IoResult <> 0) then Rewrite(F);
end;
{$I+}
if IoResult <> 0 then
begin
AddTextToGatewayLog(num,'TIDAK BISA MENULIS FILE LOG
BUAT MODEM');
end else
begin
Write(F,inttostr2(YearOf(CurrentDate),4)+'-
'+inttostr2(MonthOf(CurrentDate),2)+'-
'+inttostr2(DayOf(CurrentDate),2));
Write(F,';'+inttostr2(HourOf(CurrentTime),2)+':'+inttostr2(M
inuteOf(CurrentTime),2)+':'+inttostr2(SecondOf(CurrentTime),
2));
Write(F,';'+GatewayINIFile.ReadString('modem'+inttostr(num),
'Port', 'com1:'));
Write(F,';'+S);
Write(F,';'+s2);
Flush(F);
CloseFile(F);
end;
end;
29
while (SendNumber[i*2+1]<>chr(0)) or
(SendNumber[i*2+2]<>chr(0)) do
begin
MultiSMS.SMS[j].Number[i*2+1]:=SendNumber[i*2+1];
MultiSMS.SMS[j].Number[i*2+2]:=SendNumber[i*2+2];
i:=i+1;
end;
MultiSMS.SMS[j].Number[i*2+1]:=chr(0);
MultiSMS.SMS[j].Number[i*2+2]:=chr(0);
end;
30
end;
if (error = ERR_NONE) then
begin
DeleteFile(GatewayINIFile.ReadString('general',
'senddir', ExtractFilePath(Application.ExeName))+sr.Name);
//==============================================================
procedure TForm1.keluar(frm: HWND);
{ @Deskripsi : Fungsi untuk keluar dari program (aplikasi)
-------------------------------------------------------------}
var i: integer;
31
begin
if (MessageBox(frm,'Apakah yakin akan keluar dari program ini
?','Konfirmasi',
MB_YESNO + MB_ICONQUESTION) = IDYES) then
begin
for i:=1 to MODEMNUM do
begin
if GSMDevice[i].Used then
begin
AddTextToGatewayLog(i,'UKM_SMS gateway ditutup');
GSMDevice[i].EndConnection;
end;
end;
halt;
end;
end;
//==============================================================
procedure TForm1.btnRestartKoneksiClick(Sender: TObject);
{ @Deskripsi : fungsi untuk melakukan koneksi/ restart koneksi
ke HP secara manual
-------------------------------------------------------------}
begin
btnRestartKoneksi.Caption:= 'Restart Koneksi';
RestartAllConnections(@ChangePhoneState,@ChangeSecurityState
,@HandleIncomingSMS);
end;
//==============================================================
procedure TForm1.lvLogColumnClick(Sender: TObject; Column:
TListColumn);
{ @Deskripsi :
-------------------------------------------------------------}
begin
If Column.Index = GatewayINIFile.ReadInteger('general',
'UKMGateLogSort',0) then
begin
GatewayINIFile.WriteBool('general', 'UKMGateLogSortUp',not
GatewayINIFile.ReadBool('general',
'UKMGateLogSortUp',false));
end;
GatewayINIFile.WriteInteger('general',
'UKMGateLogSort',Column.Index);
(Sender as TCustomListView).AlphaSort;
end;
//==============================================================
procedure TForm1.lvLogCompare(Sender: TObject; Item1, Item2:
TListItem;
Data: Integer; var Compare: Integer);
{ @Deskripsi :
-------------------------------------------------------------}
var
ix: Integer;
begin
if GatewayINIFile.ReadInteger('general', 'UKMGateLogSort',0) =
0 then
begin
32
if GatewayINIFile.ReadBool('general',
'UKMGateLogSortUp',false) then
begin
Compare := CompareText(Item1.Caption,Item2.Caption)
end else
begin
Compare := CompareText(Item2.Caption,Item1.Caption)
end;
end else
begin
ix := GatewayINIFile.ReadInteger('general',
'UKMGateLogSort',0) - 1;
if GatewayINIFile.ReadBool('general',
'UKMGateLogSortUp',false) then
begin
Compare :=
CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end else
begin
Compare :=
CompareText(Item2.SubItems[ix],Item1.SubItems[ix]);
end;
end;
end;
//==============================================================
procedure TForm1.InfoAlat();
{ @Deskripsi : Fungsi untuk menampilkan info alat/ HP yang
digunakan
-------------------------------------------------------------}
var
i : integer;
buffer : array[1..100] of char;
error : GSM_Error;
ver : Double;
NetInfo : GSM_NetworkInfo;
begin
with Form1.lvInfoAlat.Items do
begin
Clear;
for i:=1 to MODEMNUM do
begin
if (GSMDevice[i].Used) and (GSMDevice[i].Connected) then
begin
error:=GSM_GetManufacturer(GSMDevice[i].DeviceID,@buffer);
if (error = ERR_NONE) then
begin
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('Device');
Item[Count-1].SubItems.Add(PChar(@buffer));
error:=GSM_GetModelName(GSMDevice[i].DeviceID,@buffer);
if (error = ERR_NONE) then
begin
33
Item[Count-1].SubItems.Strings[1]:=Item[Count-
1].SubItems.Strings[1]+' '+buffer;
end;
end;
error:=GSM_GetIMEI(GSMDevice[i].DeviceID,@buffer);
if (error = ERR_NONE) then
begin
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('IMEI');
Item[Count-1].SubItems.Add(buffer);
end;
error:=GSM_GetFirmwareVersion(GSMDevice[i].DeviceID,@ver);
if (error = ERR_NONE) then
begin
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('Firmware');
Item[Count-1].SubItems.Add(floattostr(ver));
end;
error:=GSM_GetNetworkInfo(GSMDevice[i].DeviceID,@NetInfo);
if (error = ERR_NONE) then
begin
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('Status Jaringan');
case NetInfo.State of
GSM_HomeNetwork:
begin
Item[Count-1].SubItems.Add('Home network '+
NetInfo.NetworkCode);
GSM_GetNetworkName(@NetInfo.NetworkCode,@NetInfo.NetworkName
);
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('Nama Jaringan');
Item[Count-
1].SubItems.Add(GetGammuUnicodeString(NetInfo.NetworkName));
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('LAC');
Item[Count-1].SubItems.Add(NetInfo.LAC);
Add;
34
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('CID');
Item[Count-1].SubItems.Add(NetInfo.CID);
end;
GSM_RoamingNetwork:
begin
Item[Count-1].SubItems.Add('Roaming network '+
NetInfo.NetworkCode);
GSM_GetNetworkName(@NetInfo.NetworkCode,@NetInfo.NetworkName
);
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('Nama Jaringan');
Item[Count-
1].SubItems.Add(GetGammuUnicodeString(NetInfo.NetworkName));
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('LAC');
Item[Count-1].SubItems.Add(NetInfo.LAC);
Add;
Item[Count-
1].Caption:=GatewayINIFile.ReadString('modem'+inttostr(i),
'Port', 'com1:');
Item[Count-1].SubItems.Add('CID');
Item[Count-1].SubItems.Add(NetInfo.CID);
end;
GSM_RequestingNetwork:
Item[Count-1].SubItems.Add('Meminta Jaringan');
GSM_NoNetwork:
Item[Count-1].SubItems.Add('Tidak ada jaringan');
else
Item[Count-1].SubItems.Add('Tidak tahu
'+inttostr(shortint(NetInfo.State)));
end;
end;
end;
end;
end;
end;
//==============================================================
procedure TForm1.TmMsgPendingTimer(Sender: TObject);
{ @Deskripsi : Fungsi untuk mengecek SMS/ pesan Pending yang
akan diperoses kembali
-------------------------------------------------------------}
var
kode, pesan,no : String;
qry : TZQuery;
sSQL : string;
begin
qry:= TZQuery.Create(Self);
qry.Connection:= ZConnection1;
35
qry.RequestLive:= True;
sSQL:= 'SELECT * FROM tbsmspending WHERE status ="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
kode:= qry.FieldByName('kode').AsString;
no:= qry.FieldByName('nohp').AsString;
pesan:= qry.FieldByName('pesan').AsString;
PesanPending(kode,no,pesan);
end;
qry.Free;
end;
end.
UNIT modulGlobal.pas
unit modulGlobal;
interface
implementation
//==============================================================
function OlahPesan(no: AnsiString; pesan: AnsiString): string;
{ @Deskripsi : Fungsi untuk mengolah informasi yang ada pada
pesan
-------------------------------------------------------------}
36
cnukm, cbukm, calukm, cpukm : String;
i,j, k: integer;
ja, kreg: String;
idbank, nbank, cpbank, noreg: String;
idkredit, nkredit, jnkredit, bkredit, jgkredit, bgkredit,
stuskredit, ket: String;
twridbank: String;
ceknamabank, cekcpbank: String;
reqidukm, reqidkredit: String;
qry, Opqry : TZQuery;
temp: integer;
idbakhir, idbbaru, idbtemp: string;
iduakhir, idubaru, idutemp: String;
kode, idsyarat, syarat, snbank, sjkredit, sbkredit : string;
ls: TStringList;
begin
qry:= TZQuery.Create(Form1);
qry.Connection:= Form1.ZConnection1;
qry.RequestLive:= True;
Opqry:= TZQuery.Create(Form1);
Opqry.Connection:= Form1.ZConnection1;
Opqry.RequestLive:= True;
reqidukm:='';
reqidkredit:='';
idbakhir:='';
idbbaru:='';
iduakhir:='';
idubaru:='';
kode:= '';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL := 'INSERT INTO tbsmsmasuk(Kode,Tanggal,jam,nohp,pesan)
VALUES("' + kode + '","' + FormatDateTime('yyyy-mm-dd', Now)
+ '","' + FormatDateTime('hh:nn:ss', Now) + '","' + no +
'","' + pesan + '")';
ExecQuery(sSQL,qry,True);
balas:= '<UKM-GET> ';
37
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end
else
begin // utk bank tertentu contoh: KRD#BNI#BLN
cmd:= Copy(pesan,0,3);
if (UpperCase(cmd)='KRD') then
begin
if (Length(pesan)>9) then
begin
j:= 0;
nbank:='';
jk:='';
for i:= 5 to Length(pesan) do
begin
if pesan[i]<>'#' then
begin
if j= 0 then
nbank:= nbank + pesan[i]
else if j= 1 then
jk:= jk + pesan[i];
end
else
inc(j);
end;
sSQL:= 'SELECT NamaBank FROM tbbank WHERE NamaBank="'
+ UpperCase(nbank) + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
sSQL:= 'SELECT IdBank FROM tbbank WHERE NamaBank="'
+ UpperCase(nbank) + '"';
ExecQuery(sSQL,qry,false);
idbank:= qry.FieldByName('IdBank').AsString;
if ((UpperCase(jk)='HRI') or (UpperCase(jk)='MGU')
or (UpperCase(jk)='BLN')) then
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND b.IdBank="' + idbank + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
38
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
39
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
balas:= balas + 'Maaf!. Bank :' + nbank + '
Belum menawarkan jenis kredit tersebut';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
balas:= balas + 'Maaf!. jenis perintah :' +
UpperCase(jk) + ' tidak tersedia di server, yang tersedia
(HRI, MGU, BLN)';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else // utk semua bank
begin
jk:= Copy(pesan,5,3);
if (UpperCase(jk)='HRI') then
// JenisKredit HARI = HRI
begin
dj:= Copy(pesan,9,2);
if (UpperCase(dj)='DA') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
40
if (TryStrToInt(bk,j) = false) or (bk='') then
begin
balas:= balas + 'Maaf, Parameter Besarkredit :
' + bk +' pada pesan ' + pesan + ' bukan merupakan angka.';
balas:= balas + ', cth perintah yg valid: KRD
HRI DA 8000000.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' +
no + '"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
k.Status, b.ContactPerson, b.HP FROM tbbank b, tbkredit k,
tbtawaran t WHERE k.IdKredit = t.IdKredit AND t.IdBank =
b.IdBank AND k.JenisKredit ="' + UpperCase(jk) + '" AND
k.Status ="AKTIF" AND k.BesarKredit > "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
41
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest
r, tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT HP FROM tbbank b, tbtawaran
t, tbkredit k WHERE b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' + UpperCase(jk)
+'" AND k.ket<>"LOCK"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
42
hpbank:=
qry.fieldByName('HP').AsString;
balas:= '<UKM-GET> '+ pesan;
ls:= TStringList.Create;
ls.Add(hpbank);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + hpbank + '","' +
pesan + '")';
ExecQuery(sSQL,Opqry,True);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
Next;
end;
end;
balas:= '<UKM-GET> ';
balas:= balas + 'Data kredit tidak
tersedia..Silahkan menunggu!! Server sedang mencari info ke
Bank';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'SELECT * FROM tbsmspending WHERE
nohp="' + no + '" AND pesan="' + pesan + '" AND
status="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbsmspending
(kode,nohp,pesan,status) VALUES ("' + kode + '","' + no +
'","' + pesan + '","Pending")';
ExecQuery(sSQL,qry,True);
end;
end
else
begin
balas:= balas + 'Untuk sementara pihak
BANK belum menawarkan jenis kredit yang anda request';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
43
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end; //AKHIR Perintah DA
end
else if (UpperCase(dj)='DB') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
if (TryStrToInt(bk,j) = false) or (bk='') then
begin
balas:= balas + 'Maaf, Parameter Besarkredit :
' + bk +' pada pesan ' + pesan + ' bukan merupakan angka.';
balas:= balas + ' cth perintah yg valid: KRD
HRI DB 8000000.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' +
no + '"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
k.Status, b.ContactPerson, b.HP FROM tbbank b, tbkredit k,
tbtawaran t WHERE k.IdKredit = t.IdKredit AND t.IdBank =
b.IdBank AND k.JenisKredit ="' + UpperCase(jk) + '" AND
k.Status ="AKTIF" AND k.BesarKredit < "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
44
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest
r, tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
45
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT HP FROM tbbank b, tbtawaran
t, tbkredit k WHERE b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' + UpperCase(jk)
+'" AND k.ket<>"LOCK"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
hpbank:=
qry.fieldByName('HP').AsString;
balas:= '<UKM-GET> '+ pesan;
ls:= TStringList.Create;
ls.Add(hpbank);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + hpbank + '","' +
pesan + '")';
ExecQuery(sSQL,Opqry,True);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
Next;
end;
end;
balas:= '<UKM-GET> ';
balas:= balas + 'Data kredit tidak
tersedia..Silahkan menunggu!! Server sedang mencari info ke
Bank';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
46
sSQL:= 'SELECT * FROM tbsmspending WHERE
nohp="' + no + '" AND pesan="' + pesan + '" AND
status="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbsmspending
(kode,nohp,pesan,status) VALUES ("' + kode + '","' + no +
'","' + pesan + '","Pending")';
ExecQuery(sSQL,qry,True);
end;
end
else
begin
balas:= balas + 'Untuk sementara pihak
BANK belum menawarkan jenis kredit yang anda request';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end;
end
else
// selain perintah DA dan DB
begin
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:= balas + 'Perintah ' + pesan + ' tidak
dikenal. Silahkan ketik INF untuk info perintah';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end // Akhir JenisKredit HARI = HRI
else if (UpperCase(jk)='MGU') then // JenisKredit
MINGGU = MGU
47
begin
dj:= Copy(pesan,9,2);
if (UpperCase(dj)='DA') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
if (TryStrToInt(bk,j) = false) or (bk='') then
begin
balas:= balas + 'Maaf, Parameter Besarkredit :
' + bk +' pada pesan ' + pesan + ' bukan merupakan angka.';
balas:= balas + ' cth perintah yg valid: KRD
MGU DA 10000000.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' +
no + '"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
k.Status, b.ContactPerson, b.HP FROM tbbank b, tbkredit k,
tbtawaran t WHERE k.IdKredit = t.IdKredit AND t.IdBank =
b.IdBank AND k.JenisKredit ="' + UpperCase(jk) + '" AND
k.Status ="AKTIF" AND k.BesarKredit > "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
48
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest
r, tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT HP FROM tbbank b, tbtawaran
t, tbkredit k WHERE b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' + UpperCase(jk)
+'" AND k.ket<>"LOCK"';
ExecQuery(sSQL,qry,false);
49
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
hpbank:=
qry.fieldByName('HP').AsString;
balas:= '<UKM-GET> '+ pesan;
ls:= TStringList.Create;
ls.Add(hpbank);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + hpbank + '","' +
pesan + '")';
ExecQuery(sSQL,Opqry,True);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
Next;
end;
end;
balas:= '<UKM-GET> ';
balas:= balas + 'Data kredit tidak
tersedia..Silahkan menunggu!! Server sedang mencari info ke
Bank';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'SELECT * FROM tbsmspending WHERE
nohp="' + no + '" AND pesan="' + pesan + '" AND
status="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbsmspending
(kode,nohp,pesan,status) VALUES ("' + kode + '","' + no +
'","' + pesan + '","Pending")';
ExecQuery(sSQL,qry,True);
end;
end
50
else
begin
balas:= balas + 'Untuk sementara pihak
BANK belum menawarkan jenis kredit yang anda request';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end; //AKHIR Perintah DA
end
else if (UpperCase(dj)='DB') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
if (TryStrToInt(bk,j) = false) or (bk='') then
begin
balas:= balas + 'Maaf, Parameter Besarkredit :
' + bk +' pada pesan ' + pesan + ' bukan merupakan angka.';
balas:= balas + ' cth perintah yg valid: KRD
MGU DB 10000000.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' +
no + '"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
k.Status, b.ContactPerson, b.HP FROM tbbank b, tbkredit k,
tbtawaran t WHERE k.IdKredit = t.IdKredit AND t.IdBank =
51
b.IdBank AND k.JenisKredit ="' + UpperCase(jk) + '" AND
k.Status ="AKTIF" AND k.BesarKredit < "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest
r, tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
52
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT HP FROM tbbank b, tbtawaran
t, tbkredit k WHERE b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' + UpperCase(jk)
+'" AND k.ket<>"LOCK"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
hpbank:=
qry.fieldByName('HP').AsString;
balas:= '<UKM-GET> '+ pesan;
ls:= TStringList.Create;
ls.Add(hpbank);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + hpbank + '","' +
pesan + '")';
ExecQuery(sSQL,Opqry,True);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
Next;
end;
end;
balas:= '<UKM-GET> ';
balas:= balas + 'Data kredit tidak
tersedia..Silahkan menunggu!! Server sedang mencari info ke
Bank';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
53
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'SELECT * FROM tbsmspending WHERE
nohp="' + no + '" AND pesan="' + pesan + '" AND
status="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbsmspending
(kode,nohp,pesan,status) VALUES ("' + kode + '","' + no +
'","' + pesan + '","Pending")';
ExecQuery(sSQL,qry,True);
end;
end
else
begin
balas:= balas + 'Untuk sementara pihak
BANK belum menawarkan jenis kredit yang anda request';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end;
end
else
// selain perintah DA dan DB
begin
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
balas:= balas + 'Perintah ' + pesan + ' tidak
dikenal. Silahkan ketik INF untuk info perintah';
54
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
// Akhir JenisKredit MINGGU = MGU
else if (UpperCase(jk)='BLN') then
// JenisKredit BULAN = BLN
begin
dj:= Copy(pesan,9,2);
if (UpperCase(dj)='DA') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
if (TryStrToInt(bk,j) = false) or (bk='') then
begin
balas:= balas + 'Maaf, Parameter Besarkredit :
' + bk +' pada pesan ' + pesan + ' bukan merupakan angka.';
balas:= balas + ' cth perintah yg valid: KRD
BLN DA 20000000.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' +
no + '"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
k.Status, b.ContactPerson, b.HP FROM tbbank b, tbkredit k,
tbtawaran t WHERE k.IdKredit = t.IdKredit AND t.IdBank =
b.IdBank AND k.JenisKredit ="' + UpperCase(jk) + '" AND
k.Status ="AKTIF" AND k.BesarKredit > "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
55
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest
r, tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
56
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
sSQL:= 'SELECT HP FROM tbbank b, tbtawaran
t, tbkredit k WHERE b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' + UpperCase(jk)
+'" AND k.ket<>"LOCK"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
hpbank:=
qry.fieldByName('HP').AsString;
balas:= '<UKM-GET> '+ pesan;
ls:= TStringList.Create;
ls.Add(hpbank);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + hpbank + '","' +
pesan + '")';
ExecQuery(sSQL,Opqry,True);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
Next;
end;
end;
balas:= '<UKM-GET> ';
balas:= balas + 'Data kredit tidak
tersedia..Silahkan menunggu!! Server sedang mencari info ke
Bank';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
57
sSQL:= 'SELECT * FROM tbsmspending WHERE
nohp="' + no + '" AND pesan="' + pesan + '" AND
status="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbsmspending
(kode,nohp,pesan,status) VALUES ("' + kode + '","' + no +
'","' + pesan + '","Pending")';
ExecQuery(sSQL,qry,True);
end;
end
else
begin
balas:= balas + 'Untuk sementara pihak
BANK belum menawarkan jenis kredit yang anda request';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end; //AKHIR Perintah DA
end
else if (UpperCase(dj)='DB') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
if (TryStrToInt(bk,j) = false) or (bk='') then
begin
balas:= balas + 'Maaf, Parameter Besarkredit :
' + bk +' pada pesan ' + pesan + ' bukan merupakan angka.';
balas:= balas + ' cth perintah yg valid: KRD
BLN DB 20000000.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
58
end
else
begin
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' +
no + '"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit,
k.NamaKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga,
k.Status, b.ContactPerson, b.HP FROM tbbank b, tbkredit k,
tbtawaran t WHERE k.IdKredit = t.IdKredit AND t.IdBank =
b.IdBank AND k.JenisKredit ="' + UpperCase(jk) + '" AND
k.Status ="AKTIF" AND k.BesarKredit < "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest
r, tbukm u WHERE r.IdKredit="' + reqidkredit + '" AND
r.IdUkm=u.IdUkm AND u.HP="' + no + '"';
ExecQuery(sSQL,Opqry,False);
if (Opqry.RecordCount=0) then
59
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Opqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,True);
end
else
begin
sSQL:= 'SELECT HP FROM tbbank b, tbtawaran
t, tbkredit k WHERE b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' + UpperCase(jk)
+'" AND k.ket<>"LOCK"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
hpbank:=
qry.fieldByName('HP').AsString;
balas:= '<UKM-GET> '+ pesan;
ls:= TStringList.Create;
ls.Add(hpbank);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + hpbank + '","' +
pesan + '")';
ExecQuery(sSQL,Opqry,True);
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
Next;
60
end;
end;
balas:= '<UKM-GET> ';
balas:= balas + 'Data kredit tidak
tersedia..Silahkan menunggu!! Server sedang mencari info ke
Bank';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'SELECT * FROM tbsmspending WHERE
nohp="' + no + '" AND pesan="' + pesan + '" AND
status="Pending"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbsmspending
(kode,nohp,pesan,status) VALUES ("' + kode + '","' + no +
'","' + pesan + '","Pending")';
ExecQuery(sSQL,qry,True);
end;
end
else
begin
balas:= balas + 'Untuk sementara pihak
BANK belum menawarkan jenis kredit yang anda request';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end;
end
else
// selain perintah DA dan DB
begin
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
61
balas:= balas + 'Perintah ' + pesan + ' tidak
dikenal. Silahkan ketik INF untuk info perintah';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
// Akhir JenisKredit BULAN = BLN
else
{ Selain dari jenis kredit BLN,MGU dan HRI}
begin
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:= balas + 'Perintah: ' + pesan + ' tidak
dikenal/kurang lengkap. Silahkan ketik INF untuk info
perintah';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end; // akhir
end
// jika panjang Pesan kurang dari 9 karakter /
// pesan tidak akan diproses
else
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Perintah yg Anda kirim tidak
dikenal/kurang lengkap. Silahkan ketik INF untuk info
perintah';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
62
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end // akhir K R D = KREDIT
else if (UpperCase(cmd)='INF') then
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Info
Kredit:KRD#BLN/MGU/HRI#DA/DB#BKredit, cth:KRD#BLN#DA#8000000
or KRD#NBank#JnKredit, syarat:SRT#Bank#JnKredit#BKredit,
cth:SRT#BNI#BLN#8000000';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end
else if (UpperCase(cmd)='REG') then
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT * FROM tbukm WHERE HP = "' + no + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
nukm:= qry.FieldByName('NamaUkm').AsString;
bid:= qry.FieldByName('Bidang').AsString;
untung:= qry.FieldByName('Keuntungan').AsString;
alamat:= qry.FieldByName('Alamat').AsString;
cp:= qry.FieldByName('ContactPerson').AsString;
if ((nukm<>'') and (bid<>'') and (untung<>'') and
(alamat<>'') and (cp<>'')) then
begin
balas:= balas + 'ID Anda telah terdaftar sebelumnya
dengan Nama Usaha: '+UpperCase(nukm)+ ', untuk info ketik:
INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
63
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end
else
begin
balas:= balas + ' Isi data Anda
ketik:UKM#Nmusaha#BdgUsaha#untung#Alamat#ContPerson,
cth:UKM#Mitra Abadi#Ternak Ayam#8000000#Jl. Keputih No.2
Surabaya#Ir.Suparno';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end;
end
else
begin
balas:= balas + ' Maaf!! ID Anda belum terdaftar di
Server..';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='UKM') then
begin
j:= 0;
nukm:='';
bid:='';
untung:='';
alamat:='';
cp:='';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
64
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:='SELECT NamaUkm, Bidang, Alamat, ContactPerson
FROM tbukm WHERE HP="' + no + '"';
ExecQuery(sSQL,qry,False);
cnukm:= qry.FieldByName('NamaUkm').AsString;
cbukm:= qry.FieldByName('Bidang').AsString;
calukm:= qry.FieldByName('Alamat').AsString;
cpukm:= qry.FieldByName('ContactPerson').AsString;
if ((cnukm='') and (cbukm='') and (calukm='') and
(cpukm='')) then
begin
for i:= 5 to Length(pesan) do
begin
if pesan[i]<>'#' then
begin
if j= 0 then
nukm:= nukm + pesan[i]
else if j= 1 then
bid:= bid + pesan[i]
else if j= 2 then
untung:= untung + pesan[i]
else if j= 3 then
alamat:= alamat + pesan[i]
else if j= 4 then
cp:= cp + pesan[i];
end
else
inc(j);
end;
if (cp<>'') then
begin
sSQL:= 'UPDATE tbukm SET NamaUkm="' + nukm + '",
Bidang="' + bid + '", Keuntungan="' + untung + '", Alamat="'
+ alamat + '", ContactPerson="' + cp + '" WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,true);
sSQL:= 'SELECT NoReg FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,false);
noreg:= qry.FieldByName('NoReg').AsString;
balas:= balas + 'Terimakasih Anda telah bergabung di
sistem -UKM GATEWAY- sebagai registrasi UKM. Nomor
registrasi Anda : '+ noreg +', utk info ketik: INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end
else
begin
65
balas:= balas + 'Data kurang Lengkap!.
ketik:UKM#Nmusaha#BdUsaha#untung#Alamat#CtPerson,
cth:UKM#Jaya Abadi#Ternak Ayam#8000000#Jl. Keputih No.2
Surabaya#Ir.Suparno';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
balas:= balas + 'ID Anda telah terdaftar sebelumnya
dengan Nama Usaha: '+UpperCase(cnukm)+ ', untuk info ketik:
INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='SRT') then
// SRT#MANDIRI#BLN#20000000
begin
if (Length(pesan)>12) then
begin
j:= 0;
snbank:= '';
sjkredit:= '';
sbkredit:= '';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
for i:= 5 to Length(pesan) do
begin
if pesan[i]<>'#' then
begin
if j= 0 then
snbank:= snbank + pesan[i]
else if j= 1 then
sjkredit:= sjkredit + pesan[i]
else if j= 2 then
66
sbkredit:= sbkredit + pesan[i];
end
else
inc(j);
end;
if (sbkredit<>'') then
begin
sSQL:= 'SELECT s.Syarat FROM tbkredit k, tbtawaran
t, tbbank b, tbkreditsyarat s WHERE b.NamaBank="' +
UpperCase(snbank) + '" AND b.IdBank=t.IdBank AND
t.IdKredit=k.IdKredit AND k.JenisKredit="' +
UpperCase(sjkredit) + '" AND k.BesarKredit="' + sbkredit +
'" AND k.IdKredit=s.IdKredit';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
balas:= balas +
qry.FieldByName('Syarat').AsString +', ';
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end
else
begin
balas:= balas +'Maaf! untuk sementara info syarat
kredit yang Anda request belum bisa diakses';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
67
balas:= balas + 'Maaf! Data Pesan kurang Lengkap!.
Request syarat kredit ketik:
SRT#NamaBank#JenisKredit#BesarKredit, Cth:
SRT#MANDIRI#BLN#20000000';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else // jika pesan kurang dari 12
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Perintah yg Anda kirim tidak
dikenal/kurang lengkap. Untuk info perintah ketik INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Maaf!! Perintah yang Anda Ketik tidak
dikenal.. untuk info ketik: INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
68
ExecQuery(sSQL,qry,true);
end;
end;
69
begin
if j= 0 then
nbank:= nbank + pesan[i]
else if j= 1 then
cpbank:= cpbank + pesan[i];
end
else
inc(j);
end;
if (cpbank<>'') then
begin
sSQL:= 'UPDATE tbbank SET NamaBank="' +
UpperCase(nbank) + '", ContactPerson="' + cpbank + '" WHERE
HP="' + no + '"';
ExecQuery(sSQL,qry,true);
sSQL:= 'SELECT NoReg FROM tbbank WHERE HP="' + no
+ '"';
ExecQuery(sSQL,qry,false);
noreg:= qry.FieldByName('NoReg').AsString;
balas:= balas + 'Terimakasih Anda telah bergabung
di sistem -UKM GETEWAY- sebagai registrasi BANK. Nomor
Registrasi Anda: '+ noreg +', utk info ketik: INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end
else
begin
balas:= balas + 'Maaf!! Data yg anda kirim kurang
lengkap!. ketik: BNK#NamaBank#ContactPerson, cth:
BNK#MANDIRI#Dr.Subroto';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
balas:= balas + 'Maaf!! ID Anda telah terdaftar
sebelumnya dengan Nama Perusahaan: '+UpperCase(ceknamabank)+
', untuk info ketik: INF';
70
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Perintah yg Anda kirim kurang
lengkap. Untuk Info perintah ketik INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='ADD') then
begin
j:= 0;
nkredit:='';
jnkredit:='';
bkredit:='';
jgkredit:='';
bgkredit:='';
stuskredit:='AKTIF';
ket:='OPEN';
twridbank:='';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:='SELECT NamaBank, ContactPerson FROM tbbank WHERE
HP="' + no + '"';
ExecQuery(sSQL,qry,False);
ceknamabank:= qry.FieldByName('NamaBank').AsString;
cekcpbank:= qry.FieldByName('ContactPerson').AsString;
if ((ceknamabank<>'') and (cekcpbank<>'')) then
begin
for i:= 5 to Length(pesan) do
71
begin
if pesan[i]<>'#' then
begin
if j= 0 then
nkredit:= nkredit + pesan[i]
else if j= 1 then
jnkredit:= jnkredit + pesan[i]
else if j= 2 then
bkredit:= bkredit + pesan[i]
else if j= 3 then
jgkredit:= jgkredit + pesan[i]
else if j= 4 then
bgkredit:= bgkredit + pesan[i];
end
else
inc(j);
end;
if ((nkredit<>'') and (jnkredit<>'') and (bkredit<>'')
and (jgkredit<>'') and (bgkredit<>'')) then
begin
idkredit:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now));
sSQL:= 'INSERT INTO tbkredit
(IdKredit,NamaKredit,JenisKredit,BesarKredit,JangkaWaktu,Bun
ga,Status,ket) VALUES ("' + idkredit + '","' + nkredit +
'","' + UpperCase(jnkredit) + '","' + bkredit + '","' +
jgkredit + '","' + bgkredit + '","' + stuskredit + '","' +
ket + '")';
ExecQuery(sSQL,qry,true);
sSQL:= 'SELECT IdBank FROM tbbank WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
twridbank:= qry.FieldByName('IdBank').AsString;
sSQL:= 'INSERT INTO tbtawaran (IdBank,IdKredit)
VALUES ("' + twridbank + '","' + idkredit + '")';
ExecQuery(sSQL,qry,true);
balas:= balas + 'Terimakasih. ID Kredit Perusahaan
Anda :'+ idkredit +', Input syarat Kredit
ketik:SRT#IdKredit#Syarat.
Cth:SRT#1001#syarat_1#syarat_2#syarat_n';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end
else
begin
72
balas:= balas + 'Maaf! Data Anda kurang lengkap,
Ketik: ADD#NmKredit#BLN/MGU/HRI#BsrKredit#JkWaktu#Bunga,
cth: ADD#Jangka Panjang#BLN#20000000#3THN#3.5%';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
balas:= balas + 'Maaf! Identitas perusahaan Anda
belum dikenal, untuk isi data Anda ketik:
BNK#NamaBank#ContactPerson, cth: BNK#MANDIRI#Dr.Subroto';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='UPD') then
begin
j:= 0;
idkredit:='';
nkredit:='';
jnkredit:='';
bkredit:='';
jgkredit:='';
bgkredit:='';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
for i:= 5 to Length(pesan) do
begin
if pesan[i]<>'#' then
begin
if j= 0 then
nkredit:= nkredit + pesan[i]
else if j= 1 then
jnkredit:= jnkredit + pesan[i]
else if j= 2 then
bkredit:= bkredit + pesan[i]
73
else if j= 3 then
jgkredit:= jgkredit + pesan[i]
else if j= 4 then
bgkredit:= bgkredit + pesan[i]
else if j= 5 then
idkredit:= idkredit + pesan[i];
end
else
inc(j);
end;
if (idkredit<>'') then
begin
sSQL:= 'SELECT k.IdKredit, k.NamaKredit,
k.JenisKredit, k.BesarKredit, k.JangkaWaktu, k.Bunga FROM
tbkredit k, tbtawaran t, tbbank b WHERE k.IdKredit =
t.IdKredit AND t.IdBank = b.IdBank AND b.HP ="' + no + '"
AND k.IdKredit ="' + idkredit + '"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
if (nkredit='') then
nkredit:= qry.FieldByName('NamaKredit').AsString;
if (jnkredit='') then
jnkredit:=
qry.FieldByName('JenisKredit').AsString;
if (bkredit='') then
bkredit:= qry.FieldByName('BesarKredit').AsString;
if (jgkredit='') then
jgkredit:=
qry.FieldByName('JangkaWaktu').AsString;
if (bgkredit='') then
bgkredit:= qry.FieldByName('Bunga').AsString;
74
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
balas:= balas + 'Data kurang lengkap, Update Data
Gagal. ketik:
UPD#NmKredit#JnKredit#BsKredit#JkWaktu#Bunga#IdKredit, cth:
UPD###30000000##3%#1001';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='INF') then
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Untuk input kredit ketik:
ADD#NmKredit#BLN/MGU/HRI#BsrKredit#JkWaktu#Bunga, cth:
ADD#Jangka Panjang#BLN#20000000#3THN#2%';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
Sleep(2000);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= '<UKM-GET> ';
balas:= balas + 'Update kredit ketik:
UPD#NmKredit#JnKredit#BsKredit#JkWaktu#Bunga#IdKredit, cth:
UPD#Jangka Panjang#BLN#30000000#4thn#3%#1001';
ls:= TStringList.Create;
75
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end
else if (UpperCase(cmd)='IDK') then
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT k.IdKredit, k.JenisKredit, k.BesarKredit
FROM tbkredit k, tbtawaran t, tbbank b WHERE
k.IdKredit=t.IdKredit AND t.IdBank=b.IdBank AND b.HP="' + no
+ '" AND k.Status="AKTIF"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
balas:= balas +
qry.FieldByName('JenisKredit').AsString +',';
balas:= balas +
qry.FieldByName('BesarKredit').AsString +':';
balas:= balas +
qry.FieldByName('IdKredit').AsString;
balas:= balas + '# ';
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end
else
begin
balas:= balas + 'Mohon Maaf!! Sampai sekarang Anda
belum menawarkan/memiliki IdKredit!!';
ls:= TStringList.Create;
ls.Add(no);
76
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='REG') then
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:='SELECT NamaBank, ContactPerson FROM tbbank WHERE
HP="' + no + '"';
ExecQuery(sSQL,qry,False);
ceknamabank:= qry.FieldByName('NamaBank').AsString;
cekcpbank:= qry.FieldByName('ContactPerson').AsString;
if ((ceknamabank='') and (cekcpbank='')) then
begin
balas:= balas + 'Silahkan isi data Anda ketik:
BNK#NamaBank#ContactPerson, cth: BNK#MANDIRI#Dr.Subroto';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end
else
begin
balas:= balas + 'ID Anda telah terdaftar sebelumnya
dengan Nama Perusahaan: '+UpperCase(ceknamabank)+ ', untuk
info ketik: INF';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
77
end
else if (UpperCase(cmd)='SRT') then
begin
j:= 0;
k:= 0;
idsyarat:= '';
syarat:= '';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
for i:= 5 to Length(pesan) do
// untuk menangkap idkredit
begin
if pesan[i]<>'#' then
// SRT#2007113267#data_syarat2
begin
if j= 0 then
begin
idsyarat:= idsyarat + pesan[i];
k:= i+1;
end;
end
else
inc(j);
end;
k:= k+1;
sSQL:= 'SELECT k.IdKredit FROM tbkredit k, tbtawaran t,
tbbank b WHERE k.IdKredit=t.IdKredit AND t.IdBank=b.IdBank
AND b.HP="' + no + '" AND k.IdKredit="' + idsyarat + '"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
sSQL:= 'SELECT Syarat FROM tbkreditsyarat WHERE
IdKredit="' + idsyarat + '"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
sSQL:= 'DELETE FROM tbkreditsyarat WHERE IdKredit="'
+ idsyarat + '"';
ExecQuery(sSQL,qry,True);
end;
for i:= k to Length(pesan) do
// untuk menangkap syarat2 kredit
begin
if pesan[i]<>'#' then
// cth: SRT#2007113267#syarat_1#syarat_2#syarat_n
syarat:= syarat + pesan[i]
else
begin
sSQL:= 'INSERT INTO tbkreditsyarat
(IdKredit,Syarat) VALUES ("' + idsyarat + '","' + syarat +
'")';
ExecQuery(sSQL,Opqry,true);
syarat:= '';
end;
end;
sSQL:= 'INSERT INTO tbkreditsyarat (IdKredit,Syarat)
VALUES ("' + idsyarat + '","' + syarat + '")';
78
ExecQuery(sSQL,Opqry,true);
balas:= balas + 'Terimakasih atas kelengkapan data2
pendukung kredit perusahaan Anda.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end
else
begin
balas:= balas + 'Maaf!! ID Kredit: '+ idsyarat +'
tidak ditemukan dalam database server! Input data gagal..
untuk info IDKredit ketik: IDK';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else if (UpperCase(cmd)='KRD') then
begin
j:= 0;
// KRD#20071254#OPEN
idkredit:='';
ket:='';
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
for i:= 5 to Length(pesan) do
begin
if pesan[i]<>'#' then
begin
if j= 0 then
idkredit:= idkredit + pesan[i]
else if j= 1 then
ket:= ket + pesan[i];
end
else
inc(j);
end;
if (ket<>'') then
begin
79
sSQL:= 'SELECT k.IdKredit FROM tbkredit k, tbtawaran
t, tbbank b WHERE k.IdKredit = t.IdKredit AND t.IdBank =
b.IdBank AND b.HP ="' + no + '" AND k.IdKredit ="' +
idkredit + '"';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
if ((UpperCase(ket)='TUTUP') or
(UpperCase(ket)='AKTIF')) then
begin
sSQL:= 'UPDATE tbkredit SET Status="' +
UpperCase(ket) + '" WHERE IdKredit="' + idkredit + '"';
ExecQuery(sSQL,Opqry,True);
balas:= balas + 'Terimkasih. Data kredit
perusahaan Anda dengan ID: ' + idkredit + ' sudah di ' +
UpperCase(ket) + ' kan';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end
else if ((UpperCase(ket)='OPEN') or
(UpperCase(ket)='LOCK')) then
begin
sSQL:= 'UPDATE tbkredit SET ket="' +
UpperCase(ket) + '" WHERE IdKredit="' + idkredit + '"';
ExecQuery(sSQL,Opqry,True);
balas:= balas + 'Terimkasih.. Anda sudah melakukan
' + UpperCase(ket) + ' terhadap layanan permintaan informasi
kredit dari Server';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end
else
begin
balas:= balas + 'maaf!! perintah ' +
UpperCase(ket) + ' tidak tersedia. perintah yang tersedia
hanya (TUTUP,AKTIF,OPEN,LOCK)??.';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
80
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,true);
end;
end
else
begin
balas:= balas + 'Maaf!! Data Anda dengan ID Kredit:
'+ idkredit + ' Tidak ditemukan!! Permintaan ditolak. cek
IdKredit Anda ketik:IDK';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
balas:= balas + 'Data kurang lengkap,
ketik:KRD#IdKredit#Ket. cth:utk menutup kredit
ketik:KRD#271254#TUTUP, mengunci request dari server
ketik:KRD#271254#LOCK';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end
else
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
balas:= balas + 'Maaf!! Perintah yang Anda Ketik tidak
dikenal.. untuk info ketik: INF';
ls:= TStringList.Create;
81
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,true);
end;
end;
end
else if (UpperCase(reg)='BELUM') then
// belum terdaftar sebagai anggota
begin
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now)) +
IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
cmd:= Copy(pesan,0,3);
if (UpperCase(cmd)='REG') then
begin
ja:= Copy(pesan,5,3);
if (UpperCase(ja)='BNK') then
begin
kreg:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now));
sSQL:= 'SELECT IdBank FROM tbbank ORDER BY IdBank';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
qry.Last;
idbtemp:= qry.FieldByName('IdBank').AsString;
idbakhir:= copy(idbtemp,4,4);
temp:= StrToInt(idbakhir);
temp:= temp + 1;
if (temp < 10) then
idbbaru:= Format(UpperCase(ja) +'000%d',
[temp]);
if (temp >= 10) then
idbbaru:= Format(UpperCase(ja) +'00%d',
[temp]);
if (temp >= 100) then
idbbaru:= Format(UpperCase(ja) +'0%d', [temp]);
if (temp >= 1000) then
idbbaru:= Format(UpperCase(ja) +'%d', [temp]);
sSQL:= 'INSERT INTO tbserversms
(NoReg,JenisAnggota,TglReg) VALUES ("' + kreg + '","BANK","'
+ FormatDateTime('yyyy-mm-dd', Now) + '")';
ExecQuery(sSQL,Opqry,True);
sSQL:= 'INSERT INTO tbbank
(IdBank,NoReg,NamaBank,ContactPerson,HP) VALUES ("' +
idbbaru + '","' + kreg + '","","","' + no + '")';
ExecQuery(sSQL,Opqry,True);
82
balas:= balas + 'Isi data Anda ketik:
BNK#NamaBank#ContactPerson, cth: BNK#MANDIRI#Dr.Subroto';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,True);
end
else
begin
temp:= 1;
idbbaru:= Format(UpperCase(ja) +'000%d', [temp]);
sSQL:= 'INSERT INTO tbserversms
(NoReg,JenisAnggota,TglReg) VALUES ("' + kreg + '","BANK","'
+ FormatDateTime('yyyy-mm-dd', Now) + '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'INSERT INTO tbbank
(IdBank,NoReg,NamaBank,ContactPerson,HP) VALUES ("' +
idbbaru + '","' + kreg + '","","","' + no + '")';
ExecQuery(sSQL,qry,True);
balas:= balas + 'Isi data Anda
ketik:BNK#NamaBank#ContactPerson,
cth:BNK#MANDIRI#Dr.Subroto';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end;
end
else if (UpperCase(ja)='UKM') then
begin
kreg:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now));
sSQL:= 'SELECT IdUkm FROM tbukm ORDER BY IdUkm';
ExecQuery(sSQL,qry,False);
if (qry.RecordCount<>0) then
begin
qry.Last;
idutemp:= qry.FieldByName('IdUkm').AsString;
iduakhir:= copy(idutemp,4,4);
temp:= StrToInt(iduakhir);
temp:= temp + 1;
if (temp < 10) then
83
idubaru:= Format(UpperCase(ja) +'000%d',
[temp]);
if (temp >= 10) then
idubaru:= Format(UpperCase(ja) +'00%d',
[temp]);
if (temp >= 100) then
idubaru:= Format(UpperCase(ja) +'0%d', [temp]);
if (temp >= 1000) then
idubaru:= Format(UpperCase(ja) +'%d', [temp]);
sSQL:= 'INSERT INTO tbserversms
(NoReg,JenisAnggota,TglReg) VALUES ("' + kreg + '","UKM","'
+ FormatDateTime('yyyy-mm-dd', Now) + '")';
ExecQuery(sSQL,Opqry,True);
sSQL:= 'INSERT INTO tbukm
(IdUkm,NoReg,NamaUkm,Bidang,Keuntungan,Alamat,ContactPerson,
HP) VALUES ("' + idubaru + '","' + kreg +
'","","","","","","' + no + '")';
ExecQuery(sSQL,Opqry,True);
balas:= balas + 'Isi data Anda
ketik:UKM#Nmusaha#BdgUsaha#untung#Alamat#ContPerson,
cth:UKM#Jaya Abadi#Ternak Ayam#8000000#Jl. Keputih No.2
Surabaya#Ir.Suparno';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,Opqry,True);
end
else
begin
temp:= 1;
idubaru:= Format(UpperCase(ja) +'000%d', [temp]);
sSQL:= 'INSERT INTO tbserversms
(NoReg,JenisAnggota,TglReg) VALUES ("' + kreg + '","UKM","'
+ FormatDateTime('yyyy-mm-dd', Now) + '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'INSERT INTO tbukm
(IdUkm,NoReg,NamaUkm,Bidang,Keuntungan,Alamat,ContactPerson,
HP) VALUES ("' + idubaru + '","' + kreg +
'","","","","","","' + no + '")';
ExecQuery(sSQL,qry,True);
balas:= balas + 'Isi data Anda
ketik:UKM#Nmusaha#BdgUsaha#untung#Alamat#ContPerson,
cth:UKM#Jaya Abadi#Ternak Ayam#8000000#Jl. Keputih No.2
Surabaya#Ir.Suparno';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
84
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end;
end
else
// Perintah Tidak Dikenal SELAIN UKM & BNK
begin
balas:= balas + 'Untuk dapat menggunakan layanan ini,
Silahkan Daftar identitas usaha Anda terlebih dahulu!. Untuk
Daftar ketik: REG UKM';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end;
end
else // Perintah tidak dikenal SELAIN REG
begin
balas:= balas + 'ID Anda belum terdaftar. Untuk dapat
menggunakan layanan ini, Silahkan Daftar identitas usaha
Anda terlebih dahulu!. Untuk Daftar ketik: REG UKM';
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
end;
end;
qry.Free;
Opqry.Free;
end;
//==============================================================
procedure ExecQuery(perintah: string; qry: TZQuery; tipe:
Boolean);
{ @Deskripsi : Fungsi untuk proses query database
-------------------------------------------------------------}
begin
with qry do
begin
85
qry.Close;
qry.SQL.Clear;
qry.SQL.Add(perintah);
if tipe = True then
qry.ExecSQL
else
qry.Open;
end;
end;
//==============================================================
function CekRegistrasi(no_hp : String) : string;
{ @Deskripsi : Fungsi untuk pengecekan registrasi anggota
-------------------------------------------------------------}
var
sQry : String;
qry: TZQuery;
begin
qry:= TZQuery.Create(Form1);
qry.Connection:= Form1.ZConnection1;
qry.RequestLive:= True;
sQry:= 'SELECT IdUkm FROM tbukm WHERE HP ="' + no_hp + '"';
ExecQuery(sQry, qry, false);
if qry.RecordCount <> 0 then
result:= 'ukm'
else
begin
sQry := 'SELECT IdBank FROM tbbank WHERE HP ="' + no_hp +
'"';
ExecQuery(sQry, qry, false);
if qry.RecordCount <> 0 then
result:= 'bank'
else
result:= 'belum';
end;
qry.Free;
end;
end.
UNIT UnPendingMessage.pas
unit UnPendingMessage;
interface
86
function PesanPending(pkode: String; no: String; pesan:
String):string;
implementation
//==============================================================
function PesanPending(pkode: String; no: String; pesan: String):
string;
{ @Deskripsi : Fungsi untuk mengolah/ memproses pesan pending
dari server sms
-------------------------------------------------------------}
var cmd: AnsiString;
balas, sSQL: String;
jk, bk, dj: String;
reqidukm, reqidkredit: String;
qry, Ppqry: TZQuery;
kode : string;
ls: TStringList;
begin
qry:= TZQuery.Create(Form1);
qry.Connection:= Form1.ZConnection1;
qry.RequestLive:= True;
Ppqry:= TZQuery.Create(Form1);
Ppqry.Connection:= Form1.ZConnection1;
Ppqry.RequestLive:= True;
reqidukm:='';
reqidkredit:='';
balas:= '<UKM-GET> ';
cmd:= Copy(pesan,0,3);
if (UpperCase(cmd)='KRD') then
begin
jk:= Copy(pesan,5,3);
if (UpperCase(jk)='HRI') then
begin
dj:= Copy(pesan,9,2);
if (UpperCase(dj)='DA') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit, k.NamaKredit,
k.BesarKredit, k.JangkaWaktu, k.Bunga, k.Status,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND k.BesarKredit > "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
87
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdUkm = u.IdUkm AND u.HP ="' + no + '" AND
r.IdKredit ="' + reqidkredit + '"';
ExecQuery(sSQL,Ppqry,False);
if (Ppqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Ppqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
88
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'UPDATE tbsmspending SET status="Received"
WHERE kode="' + pkode + '"';
ExecQuery(sSQL,qry,True);
end
else
balas:='Pending';
end
else if (UpperCase(dj)='DB') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit, k.NamaKredit,
k.BesarKredit, k.JangkaWaktu, k.Bunga, k.Status,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND k.BesarKredit < "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
89
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdUkm = u.IdUkm AND u.HP ="' + no + '" AND
r.IdKredit ="' + reqidkredit + '"';
ExecQuery(sSQL,Ppqry,False);
if (Ppqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Ppqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'UPDATE tbsmspending SET status="Received"
WHERE kode="' + pkode + '"';
ExecQuery(sSQL,qry,True);
end
else
balas:='Pending';
end;
end
else if (UpperCase(jk)='MGU') then
begin
dj:= Copy(pesan,9,2);
if (UpperCase(dj)='DA') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
90
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit, k.NamaKredit,
k.BesarKredit, k.JangkaWaktu, k.Bunga, k.Status,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND k.BesarKredit > "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdUkm = u.IdUkm AND u.HP="' + no + '" AND
r.IdKredit="' + reqidkredit + '"';
ExecQuery(sSQL,Ppqry,False);
if (Ppqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm+ '","' +
91
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Ppqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'UPDATE tbsmspending SET status="Received"
WHERE kode="' + pkode + '"';
ExecQuery(sSQL,qry,True);
end
else
balas:='Pending';
end
else if (UpperCase(dj)='DB') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit, k.NamaKredit,
k.BesarKredit, k.JangkaWaktu, k.Bunga, k.Status,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND k.BesarKredit < "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
92
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdUkm = u.IdUkm AND u.HP ="' + no + '" AND
r.IdKredit ="' + reqidkredit + '"';
ExecQuery(sSQL,Ppqry,False);
if (Ppqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Ppqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'UPDATE tbsmspending SET status="Received"
WHERE kode="' + pkode + '"';
ExecQuery(sSQL,qry,True);
end
else
93
balas:='Pending';
end;
end
else if (UpperCase(jk)='BLN') then
begin
dj:= Copy(pesan,9,2);
if (UpperCase(dj)='DA') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit, k.NamaKredit,
k.BesarKredit, k.JangkaWaktu, k.Bunga, k.Status,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND k.BesarKredit > "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
94
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdUkm = u.IdUkm AND u.HP ="' + no + '" AND
r.IdKredit ="' + reqidkredit + '"';
ExecQuery(sSQL,Ppqry,False);
if (Ppqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Ppqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'UPDATE tbsmspending SET status="Received"
WHERE kode="' + pkode + '"';
ExecQuery(sSQL,qry,True);
end
else
balas:='Pending';
end
else if (UpperCase(dj)='DB') then
begin
bk:= Copy(pesan,12,Length(pesan)-11);
kode:= IntToStr(YearOf(Now)) + IntToStr(MonthOf(Now))
+ IntToStr(DayOf(Now)) + IntToStr(HourOf(Now)) +
IntToStr(MinuteOf(Now)) + IntToStr(SecondOf(Now)) +
IntToStr(MilliSecondOf(Now));
sSQL:= 'SELECT IdUkm FROM tbukm WHERE HP="' + no +
'"';
ExecQuery(sSQL,qry,False);
reqidukm:= qry.FieldByName('IdUkm').AsString;
sSQL:= 'SELECT b.NamaBank, k.IdKredit, k.NamaKredit,
k.BesarKredit, k.JangkaWaktu, k.Bunga, k.Status,
b.ContactPerson, b.HP FROM tbbank b, tbkredit k, tbtawaran t
WHERE k.IdKredit = t.IdKredit AND t.IdBank = b.IdBank AND
k.JenisKredit ="' + UpperCase(jk) + '" AND k.Status ="AKTIF"
AND k.BesarKredit < "' + bk + '"';
ExecQuery(sSQL,qry,false);
if (qry.RecordCount<>0) then
begin
95
with qry do
begin
First;
while not qry.Eof do
begin
if ((Length(balas)>85) and
(Length(balas)<170)) then
begin
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName) +
'\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
kode:= IntToStr(YearOf(Now)) +
IntToStr(MonthOf(Now)) + IntToStr(DayOf(Now)) +
IntToStr(HourOf(Now)) + IntToStr(MinuteOf(Now)) +
IntToStr(SecondOf(Now)) + IntToStr(MilliSecondOf(Now));
balas:='<UKM-GET> ';
end;
reqidkredit:=
qry.FieldByName('IdKredit').AsString;
balas:= balas +
qry.fieldByName('NamaBank').AsString +',';
balas:= balas +
qry.fieldByName('NamaKredit').AsString +',';
balas:= balas +
qry.fieldByName('BesarKredit').AsString + ',';
balas:= balas +
qry.fieldByName('JangkaWaktu').AsString +',';
balas:= balas +
qry.fieldByName('Bunga').AsString +',';
balas:= balas +
qry.FieldByName('ContactPerson').AsString +',';
balas:= balas +
qry.FieldByName('HP').AsString;
balas:= balas +'#';
sSQL:= 'SELECT IdKredit FROM tbrequest r,
tbukm u WHERE r.IdUkm = u.IdUkm AND u.HP ="' + no + '" AND
r.IdKredit ="' + reqidkredit + '"';
ExecQuery(sSQL,Ppqry,False);
if (Ppqry.RecordCount=0) then
begin
sSQL:= 'INSERT INTO tbrequest
(IdUkm,IdKredit,Tanggal,Jam) VALUES ("' + reqidukm + '","' +
reqidkredit + '","' + FormatDateTime('yyyy-mm-dd', Now) +
'","' + FormatDateTime('hh:nn:ss', Now) + '")';
ExecQuery(sSQL,Ppqry,True);
end;
Next;
end;
end;
ls:= TStringList.Create;
ls.Add(no);
ls.Add(balas);
ls.SaveToFile(ExtractFilePath(Application.ExeName)
+ '\sms\outbox\outbox' + kode + '.txt');
ls.Destroy;
96
sSQL:= 'INSERT INTO tbsmskeluar
(kode,tanggal,jam,nohp,pesan) VALUES ("' + kode + '","' +
FormatDateTime('yyyy-mm-dd', Now) + '","' +
FormatDateTime('hh:nn:ss', Now) + '","' + no + '","' + balas
+ '")';
ExecQuery(sSQL,qry,True);
sSQL:= 'UPDATE tbsmspending SET status="Received"
WHERE kode="' + pkode + '"';
ExecQuery(sSQL,qry,True);
end
else
balas:='Pending';
end;
end;
end;
qry.Free;
Ppqry.Free;
end;
end.
UNIT modulSMS.pas
unit modulSMS;
interface
uses
ComCtrls, Forms, ShellAPI, IniFiles, DateUtils, SysUtils,
Gammu, modulGlobal,
dm, UnPendingMessage, Untama, Dialogs, Classes;
type
TGSMModem = class(TGammuGSMDevice)
fCFGReceive : Boolean;
fCFGSend : Boolean;
fCFGPort : String;
fCFGConnection : String;
fCFGPIN : String;
fCFGReceiveLog : Boolean;
fCFGReceiveLogFile : String;
fCFGSendLog : Boolean;
fCFGSendLogFile : String;
fCFGGammuLog : Boolean;
fCFGGammuLogFormat : String;
fCFGGammuLogFile : String;
fPINWarning : Boolean;
public
property CFGReceive : Boolean read fCFGReceive write
fCFGReceive;
property CFGSend : Boolean read fCFGSend write
fCFGSend;
property CFGPort : String read fCFGPort write
fCFGPort;
97
property CFGConnection : String read fCFGConnection
write fCFGConnection;
property CFGPIN : String read fCFGPIN write
fCFGPIN;
property CFGReceiveLog : Boolean read fCFGReceiveLog
write fCFGReceiveLog;
property CFGReceiveLogFile : String read fCFGReceiveLogFile
write fCFGReceiveLogFile;
property CFGSendLog : Boolean read fCFGSendLog write
fCFGSendLog;
property CFGSendLogFile : String read fCFGSendLogFile
write fCFGSendLogFile;
property CFGGammuLogFile : String read fCFGGammuLogFile
write fCFGGammuLogFile;
property CFGGammuLogFormat : String read fCFGGammuLogFormat
write fCFGGammuLogFormat;
property CFGGammuLog : Boolean read fCFGGammuLog write
fCFGGammuLog;
property PINWarning : Boolean read fPINWarning write
fPINWarning;
end;
var
GatewayIniFile : TIniFile;
GSMDevice : array[1..MODEMNUM] of TGSMModem;
ReceivedNum : integer;
SentOKNum : integer;
SentWrongNum : integer;
SMSPrice : extended;
procedure
ChangeSecurityState(x:integer;ID:integer;SecurityState:GSM_S
ecurityCodeType);stdcall;
procedure
ChangePhoneState(x:integer;ID:integer;Connected:WordBool);st
dcall;
procedure HandleIncomingSMS(x:integer;ID:integer);stdcall;
procedure
RestartAllConnections(PhoneCallBack:PPhoneCallBackProcClass;
SecurityCallBack:PSecurityCallBackProcClass;SMSCallBack:PSMS
CallBackProcClass);
function SearchPBKEntry(s:string):string;
function FindPrice(number:string):Extended;
function ExecuteFile(const FileName, Params, DefaultDir:
string; ShowCmd: Integer): THandle;
function IntToStr2(I: Longint;digits:integer): string;
procedure AddTextToGatewayLog(num:integer;s:string);
procedure ShowStatistics();
implementation
//==============================================================
function IntToStr2(I: Longint;digits:integer): string;
{ @Deskripsi : Fungsi untuk
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var
98
S: string[11];
j:integer;
begin
Str(I:digits, S);
for j:=1 to 11 do
begin
if s[j]<>' ' then break;
s[j]:='0';
end;
Result:= S;
end;
//==============================================================
function FindPrice(number:string):Extended;
{ @Deskripsi : Fungsi untuk
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var i:integer;
P:Extended;
begin
if not TryStrToFloat(GatewayINIFile.ReadString('general',
'SMSCostLain',''),P) then P:=0;
FindPrice:=P;
i:=1;
while true do
begin
if GatewayINIFile.ReadString('general',
'SpesialSMSNumber'+inttostr(i),'') = '' then break;
if GatewayINIFile.ReadString('general',
'SpesialSMSCost'+inttostr(i),'') = '' then break;
if
strpos(PChar(number),PChar(GatewayINIFile.ReadString('genera
l', 'SpesialSMSNumber'+inttostr(i),''))) = number then
begin
if not TryStrToFloat(GatewayINIFile.ReadString('general',
'SpesialSMSCost'+inttostr(i),''),P) then P:=0;
FindPrice:=P;
break;
end;
i:=i+1;
end;
end;
//==============================================================
procedure ShowStatistics();
{ @Deskripsi : Fungsi untuk
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var
i,Receiving,Sending:integer;
begin
Form1.gbInbox.Caption:='Pesan masuk ('+inttostr(ReceivedNum)+'
diterima';
Form1.gbOutbox.Caption:=
'Pesan keluar ('+inttostr(SentOKNum)+' dikirim dengan
harga '+
FloatToStr(SMSPrice)+' '+
99
GatewayINIFile.ReadString('general', 'SMSCurrency','')+',
'+inttostr(SentWrongNum)+' salah kirim';
Receiving:=0;
Sending:=0;
for i:=1 to MODEMNUM do
begin
if GatewayINIFile.ReadBool('modem'+inttostr(i), 'Terima',
false) then Receiving:=Receiving+1;
if GatewayINIFile.ReadBool('modem'+inttostr(i), 'Kirim',
false) then Sending:=Sending+1;
end;
if Receiving = 0 then
begin
Form1.gbInbox.Caption:=Form1.gbInbox.Caption+', penerimaan
disable';
end else
begin
Form1.gbInbox.Caption:=Form1.gbInbox.Caption+',
'+inttostr(Receiving)+' alat buat nerima';
end;
if Sending = 0 then
begin
Form1.gbOutbox.Caption:=Form1.gbOutbox.Caption+', pengiriman
disable';
end else
begin
Form1.gbOutbox.Caption:=Form1.gbOutbox.Caption+',
'+inttostr(Sending)+' alat buat ngirim';
end;
Form1.gbInbox.Caption:=Form1.gbInbox.Caption+')';
Form1.gbOutbox.Caption:=Form1.gbOutbox.Caption+')';
end;
//==============================================================
function SearchPBKEntry(s:string):string;
{ @Deskripsi : Fungsi untuk
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var
FoundNumber : boolean;
z : integer;
begin
FoundNumber:=false;
z:=1;
while true do
begin
if GatewayINIFile.ReadString('general',
'PhonebookNumber'+inttostr(z),'') = '' then break;
if GatewayINIFile.ReadString('general',
'PhonebookName'+inttostr(z),'') = '' then break;
if GatewayINIFile.ReadString('general',
'PhonebookNumber'+inttostr(z),'') = S then
begin
SearchPBKEntry:=GatewayINIFile.ReadString('general',
'PhonebookName'+inttostr(z),'');
FoundNumber:=true;
break;
end;
100
z:=z+1;
end;
if not FoundNumber then SearchPBKEntry:=S;
end;
//==============================================================
procedure AddTextToGatewayLog(num:integer;s:string);
{ @Deskripsi : Fungsi untuk
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var
CurrentDate,CurrentTime : TDateTime;
F : TextFile;
begin
if (GatewayIniFile.ReadBool('general', 'PakeGatewayLog', True)
= True) and
(GatewayIniFile.ReadString('general', 'UKMSMSGatewayLog',
ExtractFilePath(Application.ExeName)+'ukmsmsgateway.log')<>'
') then
begin
Form1.gbLog.Visible:=true;
CurrentDate:=Date;
CurrentTime:=Time;
101
GatewayIniFile.WriteString('general',
'UKMSMSGatewayLog',
ExtractFilePath(Application.ExeName)+'ukmsmsgateway.log');
AssignFile(F, GatewayIniFile.ReadString('general',
'UKMSMSGatewayLog', ''));
Rewrite(F);
end;
{$I+}
Write(F,';'+inttostr2(HourOf(CurrentTime),2)+':'+inttostr2(M
inuteOf(CurrentTime),2)+':'+inttostr2(SecondOf(CurrentTime),
2));
if num <> -1 then
begin
Write(F,';'+GatewayINIFile.ReadString('modem'+inttostr(num),
'Port', 'com1:'));
end else
begin
Write(F,';');
end;
WriteLn(F,';'+PChar(S));
Flush(F);
CloseFile(F);
end;
end else
begin
Form1.gbLog.Visible:=false;
end;
end;
102
//==============================================================
function FindGammuDevice(ID:integer):integer;
{ @Deskripsi : Fungsi untuk
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var i : integer;
begin
FindGammuDevice:=-1;
for i:=1 to MODEMNUM do
begin
if (GSMDevice[i].Used) and (GSMDevice[i].DeviceID=ID) then
begin
FindGammuDevice:=i;
break;
end;
end;
end;
//==============================================================
procedure
RestartAllConnections(PhoneCallBack:PPhoneCallBackProcClass;
SecurityCallBack:PSecurityCallBackProcClass;SMSCallBack:PSMS
CallBackProcClass);
{ @Deskripsi : Fungsi untuk merestart koneksi dengan ponsel
@Parameter : -
@Hasil : -
-------------------------------------------------------------}
var
i : integer;
F : TextFile;
begin
for i:=1 to MODEMNUM do
begin
with GSMDevice[i] do
begin
if Used then
begin
AddTextToGatewayLog(i,'Mengakhiri koneksi');
EndConnection;
Form1.sbStatus.Panels.Items[i-1].Text:='';
Used:=False;
Connected:=False;
end;
if (GatewayIniFile.ReadBool('modem'+inttostr(i), 'Kirim',
false) = True) or
(GatewayIniFile.ReadBool('modem'+inttostr(i), 'Terima',
false) = True)
then
begin
Used:=True;
AddTextToGatewayLog(i,'Memulai Koneksi');
if GatewayIniFile.ReadBool('modem'+inttostr(i),
'PakeGammuLogUKMSMS',false) then
begin
{$I-}
AssignFile(F,
GatewayIniFile.ReadString('modem'+inttostr(i),
'GammuLogUKMSMS',
103
ExtractFilePath(Application.ExeName)+'ukmsmsgammu'+inttostr(
i)+'.log'));
Append(F);
if IOResult <> 0 then Rewrite(F);
if IOResult <> 0 then
begin
AddTextToGatewayLog(i,'Resetting komunikasi file log
device ke standar');
GatewayIniFile.WriteString('modem'+inttostr(i),
'GammuLogUKMSMS',
ExtractFilePath(Application.ExeName)+'ukmsmsgammu'+inttostr(
i)+'.log');
AssignFile(F,
GatewayIniFile.ReadString('modem'+inttostr(i),
'GammuLogUKMSMS',
ExtractFilePath(Application.ExeName)+'ukmsmsgammu'+inttostr(
i)+'.log'));
Append(F);
if IOResult <> 0 then Rewrite(F);
end;
{$I+}
if IoResult <> 0 then
begin
AddTextToGatewayLog(i,'TIDAK BISA MENULIS KE LOG
FILE KOMUNIKASI BUAT ALAT');
StartConnection(GatewayIniFile.ReadString('modem'+inttostr(i
), 'Port',
'com1:'),GatewayIniFile.ReadString('modem'+inttostr(i),
'Koneksi',
'fbus'),PhoneCallBack,SecurityCallBack,SMSCallBack,'','');
end else
begin
CloseFile(F);
StartConnection(GatewayIniFile.ReadString('modem'+inttostr(i
), 'Port',
'com1:'),GatewayIniFile.ReadString('modem'+inttostr(i),
'Koneksi',
'fbus'),PhoneCallBack,SecurityCallBack,SMSCallBack,GatewayIn
iFile.ReadString('modem'+inttostr(i), 'GammuLogUKMSMS',
ExtractFilePath(Application.ExeName)+'ukmsmsgammu'+inttostr(
i)+'.log'),GatewayIniFile.ReadString('modem'+inttostr(i),
'GammuLogUKMSMSLevel', ''));
end;
end else
begin
StartConnection(GatewayIniFile.ReadString('modem'+inttostr(i
), 'Port',
'com1:'),GatewayIniFile.ReadString('modem'+inttostr(i),
'Koneksi',
'fbus'),PhoneCallBack,SecurityCallBack,SMSCallBack,'','');
end;
end;
end;
end;
ShowStatistics()
end;
104
//==============================================================
//called, when phone is connected or disconnected
procedure
ChangePhoneState(x:integer;ID:integer;Connected:WordBool);st
dcall;
{ @Deskripsi : Fungsi untuk
-------------------------------------------------------------}
var
num,i : integer;
error : GSM_Error;
buffer : array[1..100] of char;
begin
num:=FindGammuDevice(ID);
GSMDevice[num].Connected:=Connected;
if Connected then
begin
GSMDevice[num].PINWarning:=False;
error:=GSM_GetManufacturer(ID,@buffer);
if (error = ERR_NONE) then
begin
Form1.sbStatus.Panels.Items[num-1].Text:=PChar(@buffer);
error:=GSM_GetModelName(ID,@buffer);
if (error = ERR_NONE) then
begin
Form1.sbStatus.Panels.Items[num-
1].Text:=Form1.sbStatus.Panels.Items[num-1].Text+' '+buffer;
end;
end;
if error <> ERR_NONE then
begin
Form1.sbStatus.Panels.Items[num-1].Text:='Terhubung';
AddTextToGatewayLog(num,'Alat terhubung');
end else
begin
error:=GSM_GetIMEI(ID,@buffer);
if (error = ERR_NONE) then
begin
AddTextToGatewayLog(num,PChar('Terhubung
'+Form1.sbStatus.Panels.Items[num-1].Text)+' dengan IMEI
'+buffer);
end else
begin
AddTextToGatewayLog(num,PChar('Terhubung
'+Form1.sbStatus.Panels.Items[num-1].Text));
end;
end;
end else
begin
Form1.sbStatus.Panels.Items[num-1].Text:='PUTUS';
105
AddTextToGatewayLog(num,'Tidak ada koneksi dengan alat');
end;
end;
//==============================================================
//called, when phone needs PIN, PUK, etc.
procedure
ChangeSecurityState(x:integer;ID:integer;SecurityState:GSM_S
ecurityCodeType);stdcall;
{ @Deskripsi : Fungsi untuk
-------------------------------------------------------------}
var
Code : GSM_SecurityCode;
num,i : integer;
buffer : string;
error : GSM_Error;
begin
num:=FindGammuDevice(ID);
if (SecurityState = SEC_UNKNOWN) and (not
GSMDevice[num].PINWarning) then
begin
AddTextToGatewayLog(num,'Status keamanan tidak diketahui.
Kemungkinan tidak didukung oleh alat');
GSMDevice[num].PINWarning:=True;
exit;
end;
//kita mau memasukkan PIN
if (SecurityState = SEC_Pin) then
begin
buffer:=GatewayIniFile.ReadString('modem'+inttostr(num),
'PIN', '1234');
if buffer = '' then
begin
AddTextToGatewayLog(num,'PIN pada konfig file kurang dari
4 karakter. Tidak bisa dimasukkan');
Exit;
end;
Code.CodeType:=SEC_Pin;
for i:=1 to 4 do
begin
if buffer[i] = chr(0) then
begin
AddTextToGatewayLog(num,'PIN pada konfig file kurang
dari 4 karakter. Tidak bisa dimasukkan');
Exit;
end;
Code.Code[i]:=buffer[i];
end;
Code.Code[5]:=chr(0);
AddTextToGatewayLog(num,'Masukkan PIN');
error:=GSM_EnterSecurityCode(ID,@Code);
if (error <> ERR_NONE) and (error <> ERR_TIMEOUT) then
begin
AddTextToGatewayLog(num,'Error masukkan PIN. Kemungkinan
tidak tepat');
AddTextToGatewayLog(num,'Hapus PIN dari file konfig');
GatewayINIFile.DeleteKey('modem'+inttostr(num), 'PIN');
end;
end;
106
end;
//==============================================================
//called, when there is ANY SMS on SIM
procedure HandleIncomingSMS(x:integer;ID:integer);stdcall;
{ @Deskripsi : Fungsi untuk menangani ketika ada SMS masuk
-------------------------------------------------------------}
var
num,i : integer;
error : GSM_Error;
sms : GSM_MultiSMSMessage;
start : Boolean;
F : TextFile;
S4 : AnsiString;
begin
num := FindGammuDevice(ID);
if not GatewayIniFile.ReadBool('modem'+inttostr(num),
'Terima', false) then exit;
error := ERR_NONE;
start := True; //pertama set true untuk inisialisasi beberapa
variable internal DLL
while error = ERR_NONE do
begin
sms.SMS[1].Folder := 0;
error := GSM_GetNextSMSMessage(ID,@sms,start);
if (error = ERR_NONE) then
begin
if (sms.SMS[1].InboxFolder) and (sms.SMS[1].Coding <>
GSM_Coding_8bit) and (sms.SMS[1].PDU <> SMS_Status_Report)
then
begin
ReceivedNum:=ReceivedNum+1;
ShowStatistics();
S4:=GetGammuUnicodeString(sms.SMS[1].Text);
for i:=1 to length(S4) do
begin
case S4[i] of
chr(13): S4[i]:=' ';
chr(10): S4[i]:='~';
end;
end;
//tambahkan info ke layar utama
with Form1.lvInbox do
begin
SortType:=stNone;
if Items.Count>500 then Items.Delete(0);
Items.Add;
Items.Item[Items.Count-1].Caption:=S4;
Items.Item[Items.Count-
1].SubItems.Add(GatewayINIFile.ReadString('modem'+inttostr(n
um), 'Port', 'com1:'));
Items.Item[Items.Count-
1].SubItems.Add(inttostr2(sms.SMS[1].DateTime.Year,4)+'-
'+inttostr2(sms.SMS[1].DateTime.Month,2)+'-
'+inttostr2(sms.SMS[1].DateTime.Day,2)+'
'+inttostr2(sms.SMS[1].DateTime.Hour,2)+':'+inttostr2(sms.SM
S[1].DateTime.Minute,2)+':'+inttostr2(sms.SMS[1].DateTime.Se
cond,2));
107
Items.Item[Items.Count-
1].SubItems.Add(SearchPBKEntry(GetGammuUnicodeString(sms.SMS
[1].Number)));
SortType:=stBoth;
end;
//tambahkan info ke fiel log
if GatewayIniFile.ReadBool('modem'+inttostr(num),
'PakeLogTerima', false) = True then
begin
{$I-}
AssignFile(F,
GatewayIniFile.ReadString('modem'+inttostr(num),
'LogTerima',ExtractFilePath(Application.ExeName)+'Terima'+in
ttostr(num)+'.log'));
Append(F);
if (IoResult <> 0) then Rewrite(F);
if IOResult <> 0 then
begin
AddTextToGatewayLog(num,'Resetting LogTerima modem
pada opsi ke standar');
GatewayIniFile.WriteString('modem'+inttostr(num),
'LogTerima',ExtractFilePath(Application.ExeName)+'Terima'+in
ttostr(num)+'.log');
AssignFile(F,
GatewayIniFile.ReadString('modem'+inttostr(num),
'LogTerima',ExtractFilePath(Application.ExeName)+'Terima'+in
ttostr(num)+'.log'));
Append(F);
if (IoResult <> 0) then Rewrite(F);
end;
{$I+}
if (IoResult <> 0) then
begin
AddTextToGatewayLog(num,'TIDAK BISA MENULIS LOG
TERIMA BUAT MODEM');
end else
begin
Write(F,inttostr2(sms.SMS[1].DateTime.Year,4)+'-
'+inttostr2(sms.SMS[1].DateTime.Month,2)+'-
'+inttostr2(sms.SMS[1].DateTime.Day,2));
Write(F,';'+inttostr2(sms.SMS[1].DateTime.Hour,2)+':'+inttos
tr2(sms.SMS[1].DateTime.Minute,2)+':'+inttostr2(sms.SMS[1].D
ateTime.Second,2));
Write(F,';'+GatewayINIFile.ReadString('modem'+inttostr(num),
'Port', 'com1:'));
Write(F,';'+GetGammuUnicodeString(sms.SMS[1].Number));
WriteLn(F,';'+S4);
Flush(F);
CloseFile(F);
//mengolah pesan yang masuk
OlahPesan(GetGammuUnicodeString(sms.SMS[1].Number),S4);
end;
end;
end;
if sms.SMS[1].InboxFolder then
108
begin
//sekarang kita hapus SMS yang sudah dibaca
sms.SMS[1].Folder:=0;
GSM_DeleteSMSMessage(ID,@sms.SMS[1]);
end;
end;
start := false;
end;
end;
//==============================================================
function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle;
{ @Deskripsi : Fungsi untuk
-------------------------------------------------------------}
var
zFileName, zParams, zDir: array[0..79] of Char;
begin
Result := ShellExecute(Application.MainForm.Handle, nil,
StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),
StrPCopy(zDir, DefaultDir), ShowCmd);
end;
end.
unit dm;
interface
uses
SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset,
ZDataset,
ZAbstractTable;
type
TDataModule1 = class(TDataModule)
ZTbank: TZTable;
ZTkredit: TZTable;
ZTukm: TZTable;
DSbank: TDataSource;
DSkredit: TDataSource;
DSrequest: TDataSource;
DSmsperintah: TDataSource;
DSukm: TDataSource;
zQRPerintah: TZQuery;
ZQRequest: TZQuery;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
109
var
DataModule1: TDataModule1;
implementation
{$R *.dfm}
zQRPerintah.Close;
zQRPerintah.SQL.Clear;
zQRPerintah.SQL.Add('SELECT kode, ket FROM tbsmsperintah');
zQRPerintah.Open;
ZQRequest.Close;
ZQRequest.SQL.Clear;
ZQRequest.SQL.Add('SELECT IdUkm, IdKredit, Tanggal, Jam FROM
tbrequest');
ZQRequest.Open;
ZTukm.TableName:= 'tbukm';
ZTukm.Active:= True;
end;
end.
110
Instalasi MySQL
111
Pada tampilan halaman selamat datang / welcome
seperti pada gambar diatas, klik Next untuk
melanjutkan, sehingga tampilan menjadi seperti
berikut.
112
Pada tampilan diatas, klik Install untuk melakukan
installasi MySQL-4.1 sehingga proses installasi
akan kelihatan seperti tampilan gambar dibawah ini.
113
Pada tampilan gambar diatas, centang pilihan
Configuration the MySQL Server now kemudian
lanjutkan klik Finish.
114
Tampilan gambar diatas lanjutkan meng-klik Next
untuk melanjutkan sehingga akan muncul tampilan
seperti pada gambar dibawah ini.
115
Pada tampilan gambar diatas, klik Next Sehingga
ditampilkan gambar seperti dibawah ini, klik Next
saja untuk melanjutkan.
116
Pada tampilan gambar diatas ini, klik Next untuk
melanjutkan sehingga tampil seperti ditampilkan
gambar dibawah ini, klik Next saja untuk
melanjutkan
117
Pada tampilan seperti gambar diatas, klik Next,
akan ditampilkan seperti tampilan pada gambar
dibawah ini. Klik Next saja untuk melanjutkan.
118
Pada tampilan seperti gambar diatas, hilangkan
tanda chek pada Modify Security Settings agar bisa
terkoneksi dengan Zeosdbo dan lanjutkan dengan klik
Next, tampilan berikutnya seperti pada gambar
dibawah ini, klik Execute untuk menjalankan service
dan configurasi dari MySQl
119
Jika proses installasi MySQL sukses maka akan
diperlihatkan dengan berjalannya konfigurasi dan
service dari MySQL seperti yang diperlihatkan pada
gambar diatas ini. Sampai disini proses installasi
MySQl selesai, untuk menutup tampilan diatas klik
Finish dan MySQL diap untuk dioperasikan dan
digunakan.
120
Install MySQL Administrator
MySQL Administrator digunakan untuk memudahkan
pembuatan database dan table dan juga bisa
digunakan untuk membackup maupun merestore database
yang sudah ada. Langkah untuk installasi MySQL
Administrator sangat mudah yaitu dengan langka
sebagai berikut:
1. Klik 2 kali pada mysql-administrator-1.0.21-
win.exe sehingga akan tampil tampilan seperti
pada gambar dibawah ini.
121
2. Pilih option I accept the terms in the license
agreement, Klik Next untuk melanjutkan, akan
ditampilkan tampilan seperti gambar dibawah
ini, klik Next saja untuk melanjutkan
122
3. Pada tampilan gambar diatas, klik Next sehingga
akan ditampilkan seperti pada tampilan gambar
dibawah ini, lanjutkan dengan klik Install
untuk menginstall mysql administrator.
123
4. Pada tampilan seperti gambar diatas, klik
Finish yang menyatakan proses installasi mysql
administrator selesai.
124
6. Jika akan ditampilkan seperti pada tampilan
gambar dibawah ini, maka installasi mysql
administrator telah berhasil dan siap untuk
anda gunakan baik membuat database maupun yang
lainnya seperti yang tersedia pada menu yang
diperlihatkan pada gambar.
125
---halaman ini sengaja dikosongkan---
126
Install zeosdbo
Zeos merupakan software yang digunakan untuk
koneksi Delphi – MySQL, anda tidak harus
menggunakan zeos sebagai koneksi database Delphi-
MySQL anda boleh menggunakan software yang lain
yang menurut anda lebih mudah atau juga anda tidak
harus menggunakan database MySQL tergantung anda
yang menggunakan. Disini karena penulis menggunakan
database MySQL dan penulis gunakan Zeos sebagai
koneksi ke Delphi. Jika anda menggunakan database
Access, paradox yang di include ke dalam Delphi
atau yang lainnya, anda tidak harus menginstall
software Zeosdbo ini.
Untuk installasi zeosdbo, pertama kali anda
copy kan folder Zeos dimana saja anda mau (penulis
meletakkan di C:\Program
Files\Borland\Delphi7\Zeos). kemudian jalankan
program Borland Delphi (penulis menggunakan Delhi
7.0), dan lakukan langkah berikut:
1. Klik menu File + Open Project
2. Buka file ZeosDbo.bpg pada directori C:\Program
Files\Borland\Delphi7\Zeos\zeosdbo\packages\del
phi7 seperti yang diperlihatkan pada gambar
dibawah ini.
127
3. Klik menu view + Project Manager sehingga akan
ditampilkan dialog Project Manager seperti
gambar dibawah ini.
128
5. Setelah proses kompilasi selesai, lakukan
installasi terhadap komponen Zeos dengan cara
klik kanan mouse pada setiap komponen + Install
seperti yang diperlihatkan pada gambar dibawah
ini.
129
7. Lakukan installasi pada komponen yang lainnya
seperti cara diatas hingga pada komponen
Zcomponent.bpl
130
Tombol untuk menambah path library
131
Sehingga akan ditampilkan kotak dialog Browse for
Folder seperti dibawah ini.
Klik Add
132
Lakukan pemanbahan lokasi path library seperti cara
diatas, sehingga path library yang ditambahkan
seperti yang terdapat dan diperlihatkan pada gambar
dibawah ini.
133
Membuat library gammu.dll
134
Icon untuk mengcompile program
135
File library gammu.dll
136
File gammu.pas
137