現 金 往 來 表

範圍選擇 |
左右捲頁 |
重新查詢 |
原始程式
原始檔-起始
/*---------( FSACR066.C )---------*/
#include "W_FSAC.H"
#define SX 20 /*左內框 */
#define SY 10 /*上內框 */
#define SC 32 /*內框寬, 多少行 */
/*-----------------------------------------------------------------*/
#define PrHEAD UPrint("#%I 年 %I 月份 第 %I- 頁 ",Sday.Y,Sday.M,P0); \
UPrint("============================================================================================================"); \
UPrint("傳票日期 科目號 科 目 名 稱 摘 要 收入金額 支出金額 結存金額 傳票號"); \
UPrint("-------- ------- -------------------- -------------------------- ----------- ----------- ----------- ------");
#define PrSTYLEO "@M------ %S----- %S------------------ %S------------------------ %F,-------- %F,-------- %S----"
#define PrSTYLEI "@M------ %S----- %S------------------ %S------------------------ %F,-------- %F,-------- %S----"
#define PrPASS UPrint(" (上期結存) %F,----------- ",Sum[2]);
#define PrSPILT
#define PrNULL
#define PrSUMUP
#define PrSUM
#define PrNEXT
#define PrEND UPrint("============================================================================================================"); \
UPrint(" (合計) %F,-------- %F,--------",Sum[0],Sum[1]);
#define PrDATAO ACF011.YM,ACF011.AC,ACF001.ACN,ACF011.RM,ACF011.AMT,Sum[2],ACF011.KEY
#define PrDATAI ACF011.YM,ACF011.AC,ACF001.ACN,ACF011.RM,ACF011.AMT,Sum[2],ACF011.KEY
/*-----------------------------------------------------------------*/
void ShowLast();
void ShowHead();
void ShowData();
/*================================================================*/
FSACF001_T ACF001;
FSACF011_T ACF011;
double Sum[10];
DATE LastYM;
char *Table="\
\
現 金 往 來 帳 \
============================== \
月份: ----- \
\
資料輸出裝置:-------- \
";
/*===========================================================================*/
void main()
{ USetBXYN(Table,SX,SY,SC);
OPEN_ACF001; OPEN_ACF011; NamS=GET_NAME;
while(1)
{
#include <RPT1.H>
if(Field==1) UReadM(BXN(1),&Sday,0,V_WUSR,V_READ);
#include <RPT2.H> /*條件設定完畢*/
/*------------------------------------------------------------------*/
if((Sa=ChkYM(Sday,ON))==0) continue; Sm=Sday.Y*12+Sday.M; /*Sa=1..24, Sm=年*12+月*/
Ugd_Open("檔 案 處 理 中 請 稍 候 ....."); /* Sort FSACF011 */
Sp=Usp_Open();
READ1(ACF011)
{ if(p->YM.Y != Sday.Y || p->YM.M != Sday.M) continue;
if(p->KI == '3' && strcmp(p->AC,"1101 ")) continue; /*轉帳&非現金,3轉帳需為現金科目 */
if(p->KI != '3' && strcmp(p->AC,"1101 ")==0){ continue;}/*非轉帳,此為補現金分錄,不用顯示*/
USprint(BufS,"%M----%S----",p->YM,p->KEY);
Usp_InsIp(Sp,BufS,L);
}
READ2
Ugd_Close();
/*------------------------------------------------------------------*/
Ugd_Open("列印中 Ctr_F7:結束列印");
LastYM.D=0;
while(RetKey!=ESC)
{ if(Usp_GetIp(Sp,&L)==OFF) break;
lseek(ACF011K->ffd,L*sizeof(ACF011),SEEK_SET);
read(ACF011K->ffd,&ACF011,sizeof(ACF011));
ACF011.KEY[6]=NULL;
if(K0==0){ K0=1; ShowHead(); LastYM.D=0; }
ShowData();
if(Psf=='S' && K0>=21){ UWait(OFF,"Esc:重新選擇 任一鍵繼續"); UCls(); K0=0; }
if(Psf=='P' && K0>=K1){ fprintf(Stream,"%c",12); K0=0; }
}
ShowLast(); Usp_Close(Sp); LineReturn(ON);
}
}
/*===========================================================================*/
void ShowHead()
{ FSACF001_T F001;
#ifdef HP-5L /*1998/8/27*/
LockItemHead(2,"~I",NamS,"~Z2W1L12G2X20");
#else
LockItemHead(2,"~IZ2L12G2",NamS,"~Z1");
#endif
PrHEAD /*列印標頭*/
if(P0==1)
{ if(Ufk_Read(ACF001K,&F001,"1101 ")==OFF) memset(&F001,NULL,sizeof(F001));
for(I=0; I<Sa; I++)
Sum[2] += F001.AMT[0][I]-F001.AMT[1][I];
PrPASS; /*上期結存*/
}
}
/*===========================================================================*/
void ShowData()
{
if(Ufk_Read(ACF001K,&ACF001,ACF011.AC)==OFF) memset(&ACF001,NULL,sizeof(ACF001));
if(UHowDate(LastYM) == UHowDate(ACF011.YM)) ACF011.YM.D=0;
else LastYM = ACF011.YM;
if((ACF011.KI!='3' && ACF011.DC=='D') || (ACF011.KI=='3' && ACF011.DC=='C'))
{ Sum[1] += ACF011.AMT; Sum[2] -= ACF011.AMT;
PrSPILT; UPrint(PrSTYLEO,PrDATAO); /*支出,先印分隔線,再印一列資料*/
}
else
{ Sum[0] += ACF011.AMT; Sum[2] += ACF011.AMT;
PrSPILT; UPrint(PrSTYLEI,PrDATAI); /*收入,先印分隔線,再印一列資料*/
}
}
/*===========================================================================*/
void ShowLast()
{
PrEND; /*畫最底線*/
memset(Sum,NULL,sizeof(Sum));
}
原始檔-結束
Byron Wey Oct.21.1998