TOP NEWS

Isocare Knowledge Management การพัฒนาและการประยุกต์ใช้ระบบการจัดการความรู้ของฝ่ายพัฒนาซอฟท์แวร์ บริษัท ไอโซแคร์ ซิสเตมส์ จำกัด

วันจันทร์ที่ 8 เมษายน พ.ศ. 2562

GCOOP : Oracle Auto Kill & Restart on Windows Scheduler

Oracle Auto Kill InActive Session












Oracle Auto Restart






0 ความคิดเห็น:

iCoop Member Mobile App : Solution

โปรแกรมบริการสมาชิก Online
(Mobile Application)


iCoop Member

1.คุณสมบัติโปรแกรม



   1.โปรแกรมส่วนงานส่งออกข้อมูล Mobile Gateway



   1.1 โปรแกรมส่วนบริการงานส่งออก/นำเข้าข้อมูลระบบ (Mobile Gateway App)
เป็นโปรแกรมเชื่อมต่อฐานข้อมูลหลักของสหกรณ์เพื่อจัดเตรียมส่งออกข้อมูลที่จำเป็นเพื่อส่งต่อให้กับ ส่วน
Mobile Gateway Server


   1.2 โปรแกรมส่วนบริการงานเชื่อมโยงข้อมูลระบบ (Mobile Gateway Services Server)
เป็นโปรแกรมนำเข้าข้อมูลจากส่วนติดต่อฐานข้อมูลระบบงานหลักสหกรณ์ เพื่อนำเข้าสู่ฐานข้อมูลพักเพื่อบริการ
กับระบบโปรแกรมที่เรีัยกใช้งานผ่านอุปกรณ์ Mobile
  2.โปรแกรมส่วนบริการสมาชิกบนอุปกรณ์ Mobile (Android/iOS)


2.1 โปรแกรมส่วนบริการสมาชิกบน Google Play Store (iCoop Member Online)
เป็นโปรแกรมที่ส่งไปวางที่ Google Play Store เพื่อให้สมาชิก สหกรณ์ Download ไปติดตั้งยังอุปกรณ์ Mobile
เพื่อเรียกดูข้อมูลส่วนตัวสมาชิก หรือ ข่าวสารสหกรณ์ ได้


2.2 โปรแกรมส่วนบริการสมาชิกบน Apple App Store (iCoop Member Online)
เป็นโปรแกรมที่ส่งไปวางที่ Apple App Store เพื่อให้สมาชิก สหกรณ์ Download ไปติดตั้งยังอุปกรณ์ Mobile
เพื่อเรียกดูข้อมูลส่วนตัวสมาชิก หรือ ข่าวสารสหกรณ์ ได้


Mobile Application (Android , iOS)
คุณสมบัติ
1.ดูข้อมูลข่าวสารสหกรณ์
2.ดูข้อมูลส่วนตัว
3.ตรวจสอบสิทธิ์กู้
4.ดูข้อมุลรายละเอียดหุ้น
5.ดูข้อมูลรายการบัญชีเงินฝาก
6.ดูข้อมูลเงินกู้และการค้ำประกัน
7.ดูข้อมูลเรียกเก็บ


2.ลักษณะโปรแกรม (Package)
2.1 iCoop Mobile App แบบ Dedicated Mobile App


2.2 iCoop Mobile App แบบ Shared Mobile App
2.3 iCoop Mobile App เชื่อมโยงงานบริการต่อยอด

0 ความคิดเห็น:

COOP : Mobile app Features

ผลิตภัณฑ์

1 โปรแกรมระบบบริหารงานสหกรณ์ออมทรัพย์ แบบ Web Application

มีการพัฒนาโดยใช้เทคโนโลยีสมัยใหม่ เพื่อช่วยเพิ่มประสิทธิภาพการบริหารจัดการและ
การให้บริการสมาชิกสหกรณ์ออมทรัพย์
     ระบบงานทะเบียนสมาชิกและหุ้น
ระบบงานทะเบียนเงินกู้และการค้ำประกัน
ระบบงานเงินฝาก
ระบบงานการเงิน
ระบบงานบัญชี
ระบบงานประมวลผลจัดเก็บ
 ระบบงานสำหรับผู้ดูแลระบบ


1.Enterprise สำหรับสหกรณ์ขนาดใหญ่
2.Cloud Computing สำหรับสหกรณ์ขนาดกลาง
*นอกจากนี้บริษัทฯยังได้พัฒนาเทคโนโลยี Block Chain
ในการยืนยันตัวตน (Authentication) เพื่อดูข้อมูลสำคัญและออกสัญญาเงินกู้( Smart Contract)

2 ระบบบริการสมาชิกสหกรณ์ ผ่านมือถือ แบบ Online

1.ดูข้อมูลการทำธุรกรรมสมาชิก
2.แจ้งเตือนผลการทำธุรกรรม
3.ตรวจสอบสิทธิ์กู้
4.บันทึกใบคำขอกู้
5.เชื่อมโยงและดูข้อมูลการทำธุรกรรม ATM กับธนาคารได้


รองรับทั้ง Android และ iOS
*นอกจากนี้สมาชิกสหกรณ์ ยัสามารถตรวจสอบข้อมูลการเป็นสมาชิกของสมาคมฌาปนกิจสงค์เคราะห์
สหกรณ์ออมทรัพย์ แห่งประเทศไทย 8 วิชาชีพ และ สส ชสอ

3 ระบบ ATM สำหรับสหกรณ์

 สามารถทำธุรกรรมทางการเงิน ได้แก่ การฝากเงิน ถอนเงิน การจ่ายเงินกู้ และ รับชำระหนี้  โดยสามารถ
เชื่อมโยงและดูข้อมูลการทำธุรกรรม ATM กับธนาคารผ่าน Mobile Application ได้


  1. ATM Direct เป็น ระบบ ATM ที่มีการติดตั้ง ตู้ ATM ไว้ที่ สำนักงานสหกรณ์ และมีการเชื่อมโยง
กับระบบงานสหกรณ์โดยตรง
  1. ATM Online เป็นระบบ ATM ที่มีการติดตั้ง Gateway เชื่อมโยงกับทุกธนาคาร ที่เปิดให้บริการ

4 ระบบเสริมอื่นๆ

 บริษัทฯได้พัฒนาระบบงานที่สำคัญและจำเป็นสำหรับสหกรณ์ในประเทศไทย ได้แก่
- ระบบสำรองข้อมูลแบบอัติโนมัติ
- ระบบแจ้งเตือนการทำธรุกรรมและข่าวสารผ่าน Email และ SMS
- ระบบบริหารบุคคล
- ระบบพัสดุ ครุภัณฑ์




0 ความคิดเห็น:

SSL-Apache-config:กรณีศึกษาสอ.เบทาโกร

SSL-Apache-config:กรณีศึกษาสอ.เบทาโกร



Cert เป็นแบบ wildcard *.betrago.com
https://betagrocoop.betagro.com/webportal/

1.สิ่งที่ได้ รับจาก IT

2.config ที่ xampp
C:\xampp\apache\conf\extra\httpd-ssl.conf
2.1 แก้ port SSL จาก 4449 = 443
Line 36
Listen 443

2.2 แก้ config ssl
Line 80
<VirtualHost _default_:443>


#   General setup for the virtual host
DocumentRoot "C:/xampp/htdocs"
ServerName betragocoop.betrago.com:443
#ต้องตรงกับ domain ที่ cert ผูกไว้
ServerAdmin coop@betagro.com
#ส่วนนี้ต้องตรงกับที่ กำหนด
ErrorLog "C:/xampp/apache/logs/error.log"
TransferLog "C:/xampp/apache/logs/access.log"


Line 67 ให้ comment
#SSLPassPhraseDialog  builtin

2.3 comment ค่าเดิม เพิ่มเติมค่า Path cert ใหม่
#SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateFile "D:/DigiCert_certs/certs/star_betagro_com.crt"


#SSLCertificateKeyFile "conf/ssl.key/server.key"
SSLCertificateKeyFile "D:/DigiCert_certs/certs/star_betagro_com.key"


#SSLCertificateChainFile "c:/Apache24/conf/server-ca.crt"
SSLCertificateChainFile "D:/DigiCert_certs/certs/DigiCertCA.crt"

2.4 แปลง .pfx เป็น .key
ในที่นี้ cert เราติดตั้งที่ D:\DigiCert_certs\certs\
ซึ่งต้องถามรหัสผ่านจาก ผู้สร้าง .pfx ให้ ในที่นี้ คือ password


เปิด cmd
SET PATH=C:\xampp\apache\bin;%PATH%
พิมพ์
D:
Cd D:\DigiCert_certs\certs
openssl pkcs12 -in star_betagro_com.pfx -nocerts -out star_betagro_com.in.key
>>พิมพ์ รหัสผ่าน password


openssl pkcs12 -in star_betagro_com.pfx -clcerts -nokeys -out star_betagro_com.crt
>>พิมพ์ รหัสผ่าน password


openssl rsa -in star_betagro_com.in.key -out star_betagro_com.out.key
>>พิมพ์ รหัสผ่าน password


openssl rsa -in star_betagro_com.in.key -outform PEM -out star_betagro_com.out.pem.key


>>พิมพ์ รหัสผ่าน password

0 ความคิดเห็น:

แก้ปัญหา งานพิมพ์ Java Applet .PB Slip

แก้ปัญหา งานพิมพ์  Java Applet .PB Slip
1.ถอนโปรแกรม Java ทั้งหมด
2.ลงโปรแกรมใหม่ Java 1.7.11




3.copy java.policy ลง ไปใน Path C:\Program Files (x86)\Java\jre7\lib\security ชื่อไฟล์ java.policy




4.Mozilla Firefox ต้องเป็น V15 ถ้าไม่ใช่ต้อง ลบโปรแรกมแล้ว ลงใหม่ ให้เป็น V15



5.ติดตั้ง PB12.5 runtime

0 ความคิดเห็น:

GCOOP : การส่งค่าหลายค่า ireport ใช้ใน WHERE IN query

GCOOP : การส่งค่าหลายค่า ireport ใช้ใน WHERE IN query


ข้อมูลทดสอบ
table : mbmembmaster
field : member_no
  1. สร้าง parameter 2 ตัว
2. กำหนดค่า parameter แต่ละตัวดั้งนี้
  • as_memberno คือ ตัวที่จะรับค่า เป็น string จากหน้าจอ
  • list_memberno คือ จะทำให้ค่าที่รับมาอยู่ใน array แต่ละช่องโดนการ split
*** ต้องเลือก parameter class เป็น java.util.List เพราะทำหน้าที่เก็บ array
*** Use as a prompt ต้องเอาเครื่องหมายเช็คถูกออก จะทำให้ไม่ต้องใส่ค่าเวลา preview ข้อมูล ***


3. Query ข้อมูล
  • select * from mbmembmaster where $X{IN , member_no , list_memberno }
เป็นการค้นหาแบบ IN และ member_no คือ field ที่ต้องการหา
*** โดยปกติเวลาดึง list_memberno มาจะเป็น $P{list_memberno} ให้ลบ $P{} ออก เป็นคำว่า
list_memberno  อย่างเดียว ***
*** หมายเหตุ การค้นหาแบบ $X{IN , column , parameter[] } เหมือนเป็น function
พิเศษสำหรับ jasper report เท่านั้น จึงทำให้เกิด error ยาวๆข้างล่างดังรูป
แต่ในที่นี้ไม่ต้องสนใจให้ข้ามไปเลย *** (25/05/2017 ยังหาวิธีแก้ error นี้ไม่ได้)


4.preview ข้อมูล

จากการทำตามตัวอย่างข้างบน หลังจาก preview ข้อมูล จะมีแค่ช่อง as_memberno ให้ใส่
ข้อมูลที่จะใส่ ต้องไม่มี ‘ หรือ “ เช่น ‘00213976’,’00211654’ หรือ “00213976”,”00211654”
ข้อมูลที่ส่งมาต้องเป็นตัวอักษรหรือชุดคำเท่านั้นตามด้วย , เพื่อที่จะเอาไปเก็บไว้ใน
list_memberno แบบ array ได้

0 ความคิดเห็น:

การสร้าง JAVA Applet + PB Applet

การสร้าง Applet สำหรับใช้งาน เรื่องงานพิมพ์ แบบพิมพ์ผ่านเครื่องพิมพ์ตรง โดยแบ่งเป็น 2 แบบคือ
  1. การสร้าง JAVA Applet เป็น
1.1 สร้าง function ในไฟล์ printing.cs
1.2 สร้างชื่อ print ในตาราง paprintingmaster
1.3 ในตาราง paprintingmaster ฟิว primary_column ต้องต้องกรอกชื่อฟิวที่อยู่ใน xml
ที่ return กลับออกมา
1.4 สร้างรายละเอียดสำหรับสิ่งที่จะพิมพ์ในตาราง paprintingdetail โดยชื่อ column_name
จะต้องเหมือนฟิวใน xml ที่ return กลับออกมา


  1. การสร้าง PB Applet
2.1 สร้าง form ใน pb
2.2 สร้าง function ในไฟล์ printing.cs
2.3 สร้างชื่อ print ในตาราง paprintingmaster
2.4 ในตาราง paprintingmaster ฟิว primary_column ต้องต้องกรอกชื่อฟิวที่อยู่ใน xml
ที่ return กลับออกมา
2.5 ในตาราง paprintingmaster ฟิว datawindow ให้ทำการกรอกชื่อไฟล์ pb ที่ทำการสร้าง

0 ความคิดเห็น:

iCoop.คู่มือการแก้ไขรายงาน PB12 เป็น PB12.5

รายละเอียดเพิ่มเติม :

https://docs.google.com/document/d/11bUz3WRV3m8ttJKxx67SKpYDumNmiR5xDGkUhMR0m7U/edit

0 ความคิดเห็น:

วิธีแก้ไข service Error หน้าจอขอกู้ แบบแยกสาขา

service error ครับ  แยกสาขา เกษตร
หน้าขอกู้

select prefix, document_code, contnosplitbranch_flag  from lnloantype;
contnosplitbranch_flag = 1 ใช้แยกสาขา
contnosplitbranch_flag = 0 ใช้เลขเดียวกันกับสาขาใหญ่
กรณีต้องการให้ เลขที่สัญญาในระบบสินเชื่อแยกสาขาให้กำหนด
1. update  lnloantype contnosplitbranch_flag=1
Contnosplitbranch_flag จะเป็น Flag บอกว่า ให้ เลขที่ใบคำขอ Running แยกสาขาด้วยหรือไม่
ถ้าใช้ = 1 จำเป็นต้อง Dup 'CONTNO.. ของ สาขาสำนักงานใหญ่ มี ใน CMDOCUMENTCONTROL ด้วย
ไม่งั้น สาขาจะสร้างเลขที่ใบคำขอไม่ได้
2.แยก Doc control ตาม COOP_ID ดูตาม Cmcoopmaster
โดย WHERE document_code like 'CONTNO%'  และ WHERE document_code like LNREQUESDOCNO%'


และแก้ Document_Format = 'PPYYBBRRRRR'

โดย Prefix BB จะไปตัดเอา รหัส coop_id ตัวท้ายมาแทน

0 ความคิดเห็น:

วันศุกร์ที่ 5 เมษายน พ.ศ. 2562

สรุป ตัวอย่าง Script ในการทำ IVR /Call Center


KM.วิธีการCodingให้ Oracle Procedure เรียกใช้ WCF ได้ ใช้สำหรับระบบเชื่อมโยง ต่างๆ


Concept คือ การที่ Oracle Procedure จะเรียก WCF ได้ ต้องทำผ่าน ในส่วนของ UTL_HTTP
ซึ่ง เพื่อให้ง่ายต่อการแก้ไข ก็จะต้องทำ webpage สำหรับเรียก WCF ก่อน 1 ตัว ในที่นี้ใช้ svc.php และ ไปเรียกต่อ WCF อีกที


ยกตัวอย่างการเรียก  ของระบบเงินฝาก
1.SET Oracle รองรับการ Access URL 2
1.SET Oracle รองรับการ Access URL


BEGIN
       DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('www.xml', 'WWW ACL', 'ISCORFD', TRUE, 'connect');
       DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('www.xml', 'ISCORFD', TRUE, 'resolve');
       DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('www.xml', '*');
END;

2.php wcf caller เพิ่ม Function ที่ต้องการเรียก WCF
ที่ D:\GCOOP_ALL\CORE\GCOOP\Saving\Applications\mobile\svc.php



if($app=="n_deposit"){


//http://localhost/CORE/GCOOP/Saving/Applications/mobile/svc.php?ip=127.0.0.1&sid=gcoop&u=iscorfd&pwd=iscorfd&coop_id=032001&f=of_analizeaccno&a=n_deposit&p[]=01-01-000041
if($f=="of_analizeaccno"){
try {
//กรณี เป็น Date ต้องเป็น Format : date("Y-m-d")."T".date("H:i:s"),
$parameters = array(
'as_wspass' => "Data Source=$ip/$sid;Persist Security Info=True;User ID=$u;Password=$p;Unicode=True;coop_id=$coop_id;coop_control=$coop_id;",
'deptaccountnoformat' => $_REQUEST["p"][0]
);
$ret = $client->of_analizeaccno($parameters);
//print_r($ret);
  echo $ret->of_analizeaccnoResult;
}catch(Exception $e){
  echo $e->getMessage();
}
}
}
ทดสอบ Run ผ่าน Web Browser

3.Add Oracle Procedure  เพื่อเรียก WCF ผ่าน URL ข้อ 1
3.1 สร้าง WWWGET
Run สร้าง Procedure


create or replace PROCEDURE WWWGET(url in VARCHAR2,clob_buff out VARCHAR2)
IS
   request UTL_HTTP.REQ;
   response UTL_HTTP.RESP;
   n NUMBER;
   buff VARCHAR2(4000);
BEGIN
   UTL_HTTP.SET_RESPONSE_ERROR_CHECK(FALSE);
   request := UTL_HTTP.BEGIN_REQUEST(url, 'GET');
   UTL_HTTP.SET_HEADER(request, 'User-Agent', 'Mozilla/4.0');
   response := UTL_HTTP.GET_RESPONSE(request);
   DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || response.status_code);


   IF response.status_code = 200 THEN
       BEGIN
           clob_buff := EMPTY_CLOB;
           LOOP
               UTL_HTTP.READ_TEXT(response, buff, LENGTH(buff));
               clob_buff := clob_buff || buff;
           END LOOP;
   UTL_HTTP.END_RESPONSE(response);
EXCEPTION
   WHEN UTL_HTTP.END_OF_BODY THEN
               UTL_HTTP.END_RESPONSE(response);
   WHEN OTHERS THEN
               DBMS_OUTPUT.PUT_LINE(SQLERRM);
               DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
               UTL_HTTP.END_RESPONSE(response);
       END;
       
       /*
       SELECT COUNT(*) + 1 INTO n FROM CMWWWDATA;
       INSERT INTO CMWWWDATA VALUES (n, clob_buff);
       COMMIT;
       */
   ELSE
       DBMS_OUTPUT.PUT_LINE('ERROR');
       UTL_HTTP.END_RESPONSE(response);
   END IF;
END;


 3.2 สร้าง Package รายระบบเพื่อเรียก WCF


แล้วก็ สร้าง Procedure หรือ Function ในการ เรียก WCF แต่ละตัวให้ใช้ ชื่อและpackage ตรงกับ WCF


CREATE OR REPLACE PACKAGE N_DEPOSIT AS


WSPASS CONSTANT varchar2(255) := 'ip=127.0.0.1&sid=gcoop&u=iscorfd&pwd=iscorfd&coop_id=032001';
WCFNM CONSTANT varchar2(255) := 'n_deposit';
URLROOT CONSTANT varchar2(255) := 'http://localhost/CORE/GCOOP/Saving/Applications/mobile/svc.php';


Procedure of_analizeaccno(deptaccountnoformat varchar2,output out varchar2);


END N_DEPOSIT;

CREATE OR REPLACE PACKAGE BODY N_DEPOSIT AS


Procedure of_analizeaccno(deptaccountnoformat varchar2,output out varchar2) is
 URL VARCHAR2(2000);
 WCF_F VARCHAR2(200);
BEGIN
 WCF_F:='of_analizeaccno';
 URL := URLROOT||'?'||WSPASS||'&f='||WCF_F||'&a='||WCFNM||'&p[]='||deptaccountnoformat;
 WWWGET(URL,output);
--rollback;
END;


END N_DEPOSIT;

3.3 Run ทดสอบ


DECLARE
 DEPTACCOUNTNOFORMAT VARCHAR2(200);
 OUTPUT VARCHAR2(200);
BEGIN
 DEPTACCOUNTNOFORMAT := '01-01-000041';


 N_DEPOSIT.OF_ANALIZEACCNO(
   DEPTACCOUNTNOFORMAT => DEPTACCOUNTNOFORMAT,
   OUTPUT => OUTPUT
 );
 /* Legacy output:
DBMS_OUTPUT.PUT_LINE('OUTPUT = ' || OUTPUT);
*/
 :OUTPUT := OUTPUT;
--rollback;
END;


0 ความคิดเห็น: