บทนำระบบ
ศึกษาปัญหา
ศึกษาความเป็นไปได้
ศึกษาระบบเดิม
ออกแบบระบบใหม่
พัฒนาระบบ
ติดตั้ง
บำรุงรักษา
โปรแกรมงานหลัก
โปรแกรมแสดงข้อมูล
โปรแกรมปรับปรุงข้อมูล
โปรแกรมเกี่ยวกับรายงาน
โปรแกรมเกี่ยวกับรายงานสรุป
โปรแกรมเกี่ยวกับระบบ
set cursor off
set wrap on
set scor off
set epoch to 1980

set procedure to pass.prg
set procedure to display.prg
set procedure to cupdate.prg
set procedure to cash.prg
set procedure to report1.prg
set procedure to sreport1.prg

armain=7;arcm=array(armain)
arcm[1]=[งานหลัก]
arcm[2]=[แสดง]
arcm[3]=[ปรับปรุง]
arcm[4]=[ รายงาน ]
arcm[5]=[ สรุป   ]
arcm[6]=[ อื่นๆ  ]
arcm[7]=[ Exit   ]

ars1=7;arc1=array(ars1)
arc1[1]=[การขายสินค้า##]
arc1[2]=[การสังซื้อสินค้า##]
arc1[3]=[การตรวจรับสินค้า]
arc1[4]=[การยกเลิกการขาย]
arc1[5]=[การรับชำระหนี้##]
arc1[6]=[การจ่ายชำระหนี้]
arc1[7]=[กลับเมนูหลัก]

ars2=7;arc2=array(ars2)
arc2[1]=[สินค้า    ]
arc2[2]=[ลูกค้า    ]
arc2[3]=[เจ้าหนี้  ]
arc2[4]=[ลูกหนี้   ]
arc2[5]=[ผู้จำหน่าย  ]
arc2[6]=[พนักงาน   ]
arc2[7]=[กลับเมนูหลัก ]

ars3=6;arc3=array(ars3)
arc3[1]=[การเพิ่มข้อมูล  ]
arc3[2]=[การลบข้อมูล     ]
arc3[3]=[การแก้ไขข้อมูล  ]
arc3[4]=[BROWSE =>       ]
arc3[5]=[SORT =>         ]
arc3[6]=[กลับเมนูหลัก]

ars4=8;arc4=array(ars4)
arc4[1]=[การขายสินค้า =>        ]
arc4[2]=[การสั่งซื้อสินค้า =>   ]
arc4[3]=[การรับสินค้า =>        ]
arc4[4]=[ลูกหนี้ค้างชำระ        ]
arc4[5]=[เจ้าหนี้ค้างชำระ       ]
arc4[6]=[สินค้าอีก10%ถึงจุดสั่ง  ]
arc4[7]=[สินค้าถึงจุดสั่งซื้อ   ]
arc4[8]=[กลับเมนูหลัก           ]

ars5=5;arc5=array(ars5)
arc5[1]=[สรุปยอดการขาย => ]
arc5[2]=[สรุปยอดการสั่งซื้อ => ]
arc5[3]=[สรุปยอดการรับ => ]
arc5[4]=[ยอดสินค้าค้างสต๊อก ]
arc5[5]=[กลับเมนูหลัก   ]

ars6=7;arc6=array(ars6)
arc6[1]=[เกี่ยวกับ Help]
arc6[2]=[sourc]
arc6[3]=[Password]
arc6[4]=[color>>]
arc6[5]=[Dos shell>>]
arc6[6]=[screen saver>>]
arc6[7]=[quite]

opt=1
toplmt=opt
bottomlmt=armain
allsub=6
do run
do writemenu
do while lastkey() !=27
   set color to r/b
   @1,65 say time()
   set color to G+/b
   inkey(0.2)
   if lastkey() !=0
     do case
        case lastkey()=27
        headopt='*** ท่านต้องการออกจากการทำงาน ? ***'
        txtopt={'YES','NO'}
        opt=2
        do while .t.
        opt2=alert(headopt,txtopt)
        do case
           case opt2=1
                quit
           case opt2=2
                exit
        endcase
        enddo
        case lastkey()=4
          if opt<10
            do pressdown
          else
            if(opt-mod(opt,10))/10=allsub
               opt=11
            else
               opt=(opt-mod(opt,10))+11
            endif
          endif
        case lastkey()=19
          if opt<10
             do pressup
          else
             if(opt-mod(opt,10))/10=1
               opt=allsub*10+1
             else
               opt=(opt-mod(opt,10))-9
             endif
          endif
        case lastkey()=24
             do pressdown
        case lastkey()=5
             do pressup
        case lastkey()=13
             do case
                case opt=1
                     opt=11
                case opt=2
                     opt=21
                case opt=3
                     opt=31
                case opt=4
                     opt=41
                case opt=5
                     opt=51
                case opt=6
                     opt=61
                case opt=7
                  @12,0 say padc("Bye Bye Bye",80)
                  @13,0 say padc( "Good Luck",80)
                  exit
                case opt=10+ars1 .or. opt=20+ars2 .or. opt=30+ars3;
                 .or. opt=40+ars4 .or. opt=50+ars5
                     opt=1
                case opt>=11.and. opt<=10+ars1
                    if opt=11
                       cls
                       do sale
                    endif
                    if opt=12
                        cls
                        do orpro
                    endif
                    if opt=13
                        cls
                        do preceive
                    endif
                    if opt=14
                        cls
                        do askcancel
                    endif
                    if opt=15
                        cls
                        do askreci
                    endif
                    if opt=16
                       cls
                       do askpay
                    endif
                        inkey(3)
                case opt>=21.and. opt<=20+ars2
                    if opt=21
                         cls
                        do dispro
                    endif
                    if opt=22
                        cls
                        do discust
                    endif
                    if opt=23
                        cls
                        do dispay
                    endif
                    if opt=24
                       cls
                       do  disrec
                    endif
                    if opt=25
                        cls
                        do dissup
                    endif
                    if opt=26
                        cls
                        do disemp
                    endif
                       inkey(3)
                case opt>=31.and. opt<=30+ars3
                    if opt=31
                        cls
                        do append
                    endif
                    if opt=32
                        cls
                        do delete
                    endif
                    if opt=33
                        cls
                        do edits
                    endif
                    if opt=34
                        do b_browse
                    endif
                    if opt=35
                        do sort1
                    endif
                   inkey(3)
                case opt>=41.and. opt<=40+ars4
                    if opt=41
                        do sub2
                    endif
                    if opt=42
                        do sub1
                    endif
                    if opt=43
                        do sub3
                    endif
                    if opt=44
                        do deb
                    endif
                    if opt=45
                        cls
                        do pay1
                    endif
                    if opt=46
                        cls
                        do buy2
                    endif
                    if opt=47
                        do buy
                    endif
                    inkey(3)
                case opt>=51.and. opt<=50+ars5
                   if opt=51
                        do sub4
                   endif
                    if opt=52
                        do sub5
                    endif
                    if opt=53
                        do sub6
                    endif
                    if opt=54
                        cls
                        do ports07
                    endif
                    inkey(3)
                case opt>=61.and. opt<=60+ars6
                    if opt=61
                       do help
                    endif
                    if opt=62
                        cls
                        do sss
                    endif
                    if opt=63
                        cls
                        do ade_pa
                    endif
                    if opt=64
                       do setsee
                    endif
                    if opt=65
                        cls
                       do os
                    endif
                    if opt=66
                        cls
                        do see
                    endif
                    if opt=67
                       exit
                    endif
                      inkey(3)
             endcase
         endcase
     do case
       case opt<10
          toplmt=1;bottomlmt=armain
       case opt>=11 .and. opt<=10+ars1
          toplmt=11;bottomlmt=10+ars1
       case opt>=21 .and. opt<=20+ars2
          toplmt=21;bottomlmt=20+ars2
       case opt>=31 .and. opt<=30+ars3
          toplmt=31;bottomlmt=30+ars3
       case opt>=41 .and. opt<=40+ars4
          toplmt=41;bottomlmt=40+ars4
       case opt>=51 .and. opt<=50+ars5
          toplmt=51;bottomlmt=50+ars5
       case opt>=61 .and. opt<=60+ars6
          toplmt=61;bottomlmt=60+ars6
     endcase
     do writemenu
     keyboard chr(0)
     inkey()
   endif
enddo
//========================================
procedure pressdown
  if opt=bottomlmt
     opt=toplmt
  else
     opt=opt+1
  endif
return
procedure pressup
  if opt = toplmt
     opt = bottomlmt
  else
     opt = opt-1
  endif
return
//==========================================
procedure writemenu

set color to b/br
set color to R/GR
cls
@ 0,0 to 24,79
set color to "/BG+"
@5,7 clear to 23,74
set color to "GR+/RB+"
@4,5 clear to 22,72
@19,5 SAY PADC(" _Program By Nirundorn Jumrus ID. 3901189",50)
@18,10 TO 20,50  doub
@21,5 SAY PADC("Send A.Burin  Rujjanapan",50)
@20,15 TO 22,45  doub
 use see
  _s=s
 use
do case
   case _s="1"
        shadow(1)
   case _s="2"
        shadow(2)
   case _s="3"
        shadow(3)
   case _s="4"
        shadow(4)
end case

for j=1 to armain
  @ 2,j*10 say arcm[j]
next
i=5
do case
   case opt>=11 .and. opt<=ars1+10
     for j=i to i+ars1-1
       @j,10 say arc1[j-i+1]
     next
     tempar=arc1
   case opt>=21 .and. opt<=ars2+20
     for j=i to i+ars2-1
       @j,20 say arc2[j-i+1]
     next
     tempar=arc2
   case opt>=31 .and. opt<=ars3+30
     for j=i to i+ars3-1
       @j,30 say arc3[j-i+1]
     next
     tempar=arc3
   case opt>=41 .and. opt<=ars4+40
     for j=i to i+ars4-1
       @j,40 say arc4[j-i+1]
     next
     tempar=arc4
   case opt>=51 .and. opt<=ars5+50
     for j=i to i+ars5-1
       @j,50 say arc5[j-i+1]
     next
     tempar=arc5
   case opt>=61 .and. opt<=ars6+60
     for j=i to i+ars6-1
       @j,60 say arc6[j-i+1]
     next
     tempar=arc6
endcase
set color to b/bg
if opt>10
  @i+mod(opt,10)-1,opt-mod(opt,10);
   say tempar[mod(opt,10)]
  set color to w/n
  @2,(opt-mod(opt,10));
   say arcm[(opt-mod(opt,10))/10]
else
  @2,mod(opt,10)*10 say arcm[mod(opt,10)]
endif
set color to b/w
return
//========================
procedure run
//set key 28 to helpform       //F1
//set key -1 to helpreadvar    //F2
set wrap on
set decimals to 2
set color to /bg+
cls
set color to /gr
@ 1,16 say "********************************************"
@ 2,16 say "         ร้านอุปกรณ์ไฟฟฟ้านิรันดร์          "
@ 3,16 say "   99 หมู่7 ต.รอบเวียง อ.เมือง จ.ลำปาง 5200 "
@ 4,16 say "             (054)415314                    "
@ 5,16 say "********************************************"

set color to /n
@ 9,17 clear to 15,62
set color to w/b.w/b
@ 8,15 clear to 14,60
use employee
do while .t.
   _us=space(20)
   _pa=space(5)
   _user=space(20)
   _pri=0
   set color to w/b,b/w
   @ 10,20 say "Input User Namme :" get _us
   @ 12,20 say "    Password     :"
   set color to bg+/bg+,/w/w
   @ 12,40 get _pa
   read
   locate for user=_us .and. password=_pa
   if found()
      _user=user
      _pri=priority
      cls
      exit

   else
      set color to r+/w
      @17,5 clear to 19,75
      @17,8 to 19,72
      @18,25 say "!! Password Or User ของท่านผิด !!"
      loop
   endif
enddo
use
//====================================
procedure submenu
cls
save screen to x
save screen to x
set color to w/bg+
cls
set color to w/b
@ 1,2 clear to 3,77
set color to w/gr
@5,2 clear to 19,77
set color to w/rb+
@ 21,2 clear to 23,77

set color to b/gr,/w
op=0
@ 2,30 say "รายชื่อในการปรับปรุง"
@ 7,12 say repl('*',54)
@ 9,32 prompt "แฟ้มสินค้า"
@ 10,32 prompt "แฟ้มลูกค้า"
@ 11,32 prompt "แฟ้มเจ้าหนี้"
@ 12,32 prompt "แฟ้มลูกหนี้"
@ 13,32 prompt "แฟ้มผู้จำหน่าย"
@ 14,32 prompt "แฟ้มพนักงาน"
@ 15,32 prompt "กลับเมนูหลัก"
@ 17,12 say repl("*",54)
@ 22,24 say "โปรดเลือกการทำงานข้อ 1-7 "+chr(24)+''+chr(25)+"แล้วEnter"
@23,24 say "  ESC กลับสู่เมนูหลัก"
menu to op
restore screen from x
return
//==========================
procedure append
op=0
do while lastkey()!=27
   do submenu
   do case
      case op=1
           do apppro
      case op=2
           do appcust
      case op=3
           do apppay
      case op=4
           do apprec
      case op=5
           do appsup
      case op=6
           do appemp
      case op=7
           return
   endcase
enddo
return
//========================
procedure delete
op=0
do while lastkey()!=27
   do submenu
   do case
      case op=1
           do delpro
      case op=2
           do delcust
      case op=3
           do delpay
      case op=4
           do delrec
      case op=5
           do delsup
      case op=6
           do delemp
      case op=7
           return
   endcase
enddo
return
//======================
procedure edits
op=0
do while lastkey()!=27
   do submenu
   do case
      case op=1
           do editpro
      case op=2
           do editcust
      case op=3
           do editpay
      case op=4
           do editrec
      case op=5
           do editsup
      case op=6
           do editemp
      case op=7
           return
   endcase
enddo
return
//====================