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] format "$DA-P,A=\"Date:%s\"$\n";
F64 amount format "Amount$$$DA,A=\"%10.2f\"$\n";
U8 credit[512] format "$DA-P,A=\"Credit(from)Acct:%s\"$\n";
U8 debit [512] format "$DA-P,A=\"Debit(to)Acct:%s\"$\n";
U8 desc [512] format "$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;
}