U0 BgtEntryDel2(CBgtEntry *tmpb) { if (tmpb->type!=BE_TEMPLATE_COPY) { Free(tmpb->credit); Free(tmpb->debit); Free(tmpb->desc); } } CBgtEntry *BgtEntryCopy(CBgtEntry *tmpb,Bool periodic_copy) { CBgtEntry *res=MAlloc(sizeof(CBgtEntry)); MemCpy(res,tmpb,sizeof(CBgtEntry)); if (periodic_copy) { res->credit=StrNew(tmpb->credit); res->debit =StrNew(tmpb->debit); res->desc =StrNew(tmpb->desc); } return res; } U0 BgtEntryDel(CBgtEntry *tmpb) { BgtEntryDel2(tmpb); Free(tmpb); } U0 BgtIns(CBgtEntry *tmpb) { CBgtEntry *tmpb1=b_head.next; while (tmpb1!=&b_head && tmpb1->date<tmpb->date) tmpb1=tmpb1->next; QueIns(tmpb,tmpb1->last); } class CBgtEntryForm { U8 date[512] fmtstr "$DA-P,A=\"Date :%s\"$\n"; F64 amount fmtstr "Amount $$$DA,A=\"%10.2f\"$\n"; U8 credit[512] fmtstr "$DA-P,A=\"Credit (from) Acct:%s\"$\n"; U8 debit [512] fmtstr "$DA-P,A=\"Debit (to) Acct:%s\"$\n"; U8 desc [512] fmtstr "$DA-P,A=\"Desc :%s\"$\n"; }; CBgtEntry *BgtEntryPmt(CBgtEntry *dft=NULL) { CBgtEntryForm b; CBgtEntry *tmpb; U8 *st; MemSet(&b,0,sizeof(CBgtEntryForm)); StrCpy(&b.date,"*"); if (dft) { StrPrint(b.date,"%D",dft->date); b.amount=dft->amount; StrCpy(b.credit,dft->credit); StrCpy(b.debit ,dft->debit); StrCpy(b.desc ,dft->desc); } while (TRUE) if (PopUpForm(&b)) { if (!*b.credit) { st=BgtPopUpAcct("Credit Acct\n\n"); if (st!=DOCM_CANCEL) StrCpy(b.credit,st); } else if (!*b.debit) { st=BgtPopUpAcct("Debit Acct\n\n"); if (st!=DOCM_CANCEL) StrCpy(b.debit,st); } else { tmpb=CAlloc(sizeof(CBgtEntry)); tmpb->date =Str2Date(b.date); tmpb->amount=b.amount; tmpb->credit=StrNew(b.credit); tmpb->debit =StrNew(b.debit); tmpb->desc =StrNew(b.desc); tmpb->type =BE_NORMAL; StrFileAdd(tmpb->credit,&accts_table_strs,accts_table); StrFileAdd(tmpb->debit,&accts_table_strs,accts_table); return tmpb; } } else return NULL; }