常用傳票分錄(設定)

wpe57.jpg (45552 bytes)

科目查詢
wpe58.jpg (9322 bytes)

拷貝傳票
wpe59.jpg (7191 bytes)

萬年曆
wpe5A.jpg (7130 bytes)


原始程式

原始檔-起始
/*---------( FSACPA11.C )---常用傳票-----*/
#include    "W_FSAC.H"
#define      SX  3             /*左內框                             */
#define      SY  4             /*上內框                             */
#define      SC  76            /*內框寬, 多少行                     */
#define      ANO   120  /*ARRAY  陣列筆數*/
#define      TNO     3  /*TITLE  抬頭項數*/
#define      RNO    16  /*ROW    螢幕列數*/
#define      CNO     4  /*COLUMM 各列項數*/
#define      SNO     8  /*螢幕起始列數   */


void Field04();
void Del1Page();
char *ChainKI(char KI);
char *ChainDC(int r);
int  SetCon();
void CopyACF011();
/*================================================================*/
FSACF001_T   ACF001;
FSACF011_T   ACF011;
FSACFA11_T   ACFA11,ACFA11A[ANO];
char        *Table="\
 常用編號:----       名稱:----------------     傳票別(123):---------------- \
============================================================================\
科目號     科  目  名  稱          摘         要        D/C   金   額       \
------- -------------------- -------------------------- --- -----------     \
                                                                            \
============================================================================";

void main()
{  USetBXYN(Table,SX,SY,SC);
   UShowTable(3,4,78,SNO-1,Table,V_TABLE);
   for(I=0; I<RNO; I++) UShowSL(3,I+SNO,76,&Table[(SNO-4)*76],V_TABLE);
   UShowTable(3,I+SNO,78,strlen(Table)/76+RNO+1,&Table[(SNO-3)*76],V_TABLE);
   NamS=GET_NAME;            USetXN(&Table[(SNO-5)*76]-2);
   UDrawBox(1,3,80,24,V_BLUE,NO,NO,2);
   OPEN_ACF001; OPEN_ACFA11;
   ACF001Tx();  OPEN_ACF011;
   Ugd_Open("F4:查科目    F8:拷備傳票    F10:刪除    PgDn:存入");
   Ufk_ReadLast(ACFA11K,ACFA11.KEY);   Read1Page();
   while(1)
   {   switch(Field)
       {   case  1: if(UReadS(BXN(1),ACFA11.KEY,"NL",V_SHOW,V_READ)) Read1Page();    break;
           case  2:    UReadS(BXN(2),ACFA11.NAM,"C",V_SHOW,V_READ);                    break;
           case  3:  UReadTog(BXN(3),&ACFA11.KI,V_TOG,"123",ChainKI('1'),ChainKI('2'),ChainKI('3'));  UShowSL(BXN(3),ChainKI(ACFA11.KI),V_SHOW); break;
           default: Field04();                                         break;
       }
       switch(RetKey)
       {   case F8    : CopyACF011();                                  break;
           case F10   : Del1Page();                                    break;
           case PGUP  : case PGDN: case C_PGUP: case C_PGDN:
                        ACFA11.KEY[4]=NULL;   L=atol(ACFA11.KEY)+1;
                        Write1Page();
                        if(RetKey==ENTER) break;
                        if(Ufk_PgUD(ACFA11K,ACFA11.KEY)==OFF)
                            sprintf(ACFA11.KEY,"%04ld",L);
                        Read1Page(); Field=1;                          break;
           case ESC   : Write1Page();   Ufk_WriteLast(ACFA11K);
                        if(RetKey==ENTER) break; else exit(0);         break;
           default    : UCtrField(ANO,TNO,RNO,CNO,V_SHOW);             break;
       }
       if(Modify==ON) USetColor(SX,SY-1,6,V_MODIFY);
   }
}
/*===========================================================================*/
void Field04()
{   int  col=(Field-TNO-1)%CNO,  row=(Field-TNO-1)/CNO;
    int  y=row+SNO, r=row+OffSet;

    switch(col)
    {   case 0: UReadS(XN(0),ACFA11A[r].AC,"NL",V_SHOW,V_READ);
                if(Utx_Chain(Tx,ACFA11A[r].AC,X[0],y,28,V_SHOW)==OFF)
                    UShowSL(3,y,76,&Table[(SNO-4)*76],V_SHOW);
                if(RetKey==F4)
                  Utx_Pick(Tx,ACFA11A[r].AC,X[0],y,28," 科 目 查 詢 ",V_SHOW);
                break;
        case 1: UReadS(XN(2),ACFA11A[r].RM,"C",V_SHOW,V_READ);            break;
        case 2: UReadTog(X[3],y,4,&ACFA11A[r].DC,V_TOG,"DC ","借","貸","  ");
                UShowSL(XN(3)+1,ChainDC(r),V_SHOW);
        case 3: UReadD(XN(4),&ACFA11A[r].AMT,",",V_SHOW,V_READ);                        break;
    }
}
/*===========================================================================*/
void Show1Page()
{   char *pS;
    int   y,r;

    UShowSL(BXN(1),ACFA11.KEY,V_SHOW);
    UShowSL(BXN(2),ACFA11.NAM,V_SHOW);
    UShowSL(BXN(3),ChainKI(ACFA11.KI),V_SHOW);
    for(I=0; I<RNO; I++)
    {   y=I+SNO;  r=I+OffSet;
        if(Utx_Chain(Tx,ACFA11A[r].AC,XY(0),28,V_SHOW)==OFF) UShowSL(3,y,76,&Table[(SNO-4)*76],V_SHOW);
        else
        {   UShowSL(XN(2),ACFA11A[r].RM,V_SHOW);
            UShowSL(XN(3)+1,ChainDC(r),V_SHOW);
            UShowD(XN(4),ACFA11A[r].AMT,",",V_SHOW);
        }
    }
}
/*===========================================================================*/
int  DiskRec,Update; /*供Write1Page使用*/
void Read1Page()
{
    ACFA11.KEY[ACFA11K->kmk]=NULL;
    memset(&ACFA11A,NULL,sizeof(ACFA11A));  /*讀資料時要先將Buffer清掉*/
    for(DiskRec=0; DiskRec<ANO; DiskRec++)
    {   sprintf(BufS,"%s%c",ACFA11.KEY,DiskRec+2);
        if(Ufk_Read(ACFA11K,&ACFA11A[DiskRec],BufS)==OFF) break;
    }
    if(DiskRec==0)
    {   memset(&ACFA11.KEY[0]+sizeof(ACFA11.KEY),NULL,sizeof(ACFA11)-sizeof(ACFA11.KEY));
        UShowS(SX,SY-1,"(新增)",V_CREATE);   Update=OFF;
    }
    else
    {   UShowS(SX,SY-1,"(修改)",V_EDIT);   Update=ON;
        ACFA11=ACFA11A[0];
        ACFA11.KEY[ACFA11K->kmk]=NULL; /*設給ACFA11以便操作*/
    }
    Modify=OFF; OffSet=0; Show1Page(); /*讀入時一定要Modify=OFF*/
}
/*===========================================================================*/
void Write1Page()
{   int     i,rec;

    if(Modify==OFF) return;
    for(rec=i=0; i<ANO; i++)
    {   if(ACFA11A[i].AC[0]==NULL) continue;
        sprintf(ACFA11A[i].KEY,"%s%c",ACFA11.KEY,rec+2);
        strcpy(ACFA11A[i].NAM,ACFA11.NAM);
        ACFA11A[i].KI=ACFA11.KI;
        Ufk_Write(ACFA11K,&ACFA11A[i]);
        rec++;
    }
    for(i=rec; i<DiskRec; i++)
    {   sprintf(BufS,"%s%c",ACFA11.KEY,i+2);
        Ufk_Del(ACFA11K,BufS);
    }
}
/*===========================================================================*/
void Del1Page()
{
    UWait(ON,"若 確 定 要 刪 除 本 筆 資 料 .請 再 按  F10");
    if(RetKey!=F10) return;
    for(I=0; I<ANO; I++)
    {   sprintf(BufS,"%s%c",ACFA11.KEY,I+1);
        if(Ufk_Del(ACFA11K,BufS)==OFF && I>0) break;
    }
    if(Ufk_PgUD(ACFA11K,ACFA11.KEY)==OFF)  /*刪除後跳到下一筆*/
    {   memset(&ACFA11,NULL,sizeof(ACFA11));
        memset(&ACFA11A,NULL,sizeof(ACFA11A));
    }
    Read1Page();
}
/*===========================================================================*/
char *ChainKI(char KI)
{   switch(KI)
    {   case '1': return "現金收入傳票";
        case '2': return "現金支出傳票";
        case '3': return "轉 帳 傳 票 ";
        default : return " ";
    }
}
/*===========================================================================*/
char *ChainDC(int r)
{   switch(ACFA11A[r].DC)
    {   case 'D': return " 借 ";
        case 'C': return " 貸 ";
        default : return "    ";
    }
}
/*===========================================================================*/
int SetCon()
{   int     i=1,md=Modify,x=21,y=SNO-1,no=2;   /* no=設定項目 */
    char    Yn='N';

    Wo=Uwo_Open(x-6,y,x+51,y+no*2+2);
    Uwo_DrawBar(Wo,V_WBOX,V_W_IN,YES,3);                          y+=2;
    UShowS(x,y,"傳票編號:",V_SHOW);                                    y+=2;
    UShowS(x,y,"執行(YN): N",V_SHOW);                                  x+=10;
    do
    {   y = SNO-1+2*i;
        if(i==1) UReadS(x,y,6,SelKey,"NL",V_SHOW,V_READ);
        if(i==2) UReadC(x,y,1,&Yn,"YN",V_SHOW,V_READ);
        if(RetKey==LEFT || RetKey==UP)    if(--i<1) i=no;
        if(RetKey==RIGHT || RetKey==DOWN) if(++i>no) i=1;
    }while(Yn!='Y' && RetKey!=ESC);
    Modify=md; Uwo_Close(Wo); return RetKey;
}
/*===========================================================================*/
void CopyACF011()
{
    if(SetCon()==ESC) return;
    memset(&ACFA11A,NULL,sizeof(ACFA11A));
    Modify=ON;  Write1Page();
    for(I=0; I<ANO; I++)
    {   sprintf(BufS,"%s%c",SelKey,I+2);
        if(Ufk_Read(ACF011K,&ACF011,BufS)==OFF) break;
        strcpy(ACFA11A[I].AC,ACF011.AC);
        strcpy(ACFA11A[I].RM,ACF011.RM);
        ACFA11.KI=ACF011.KI;
        ACFA11A[I].DC=ACF011.DC;
        ACFA11A[I].AMT=ACF011.AMT;
    }
    Modify=ON; OffSet=0; Show1Page();
}
原始檔-結束

Byron Wey  Oct.21.1998


回首頁C之城