U8 *bgt_string_file; U8 *bgt_accts_file; U8 *bgt_data_file; #define BE_NORMAL 0 #define BE_GAS 1 #define BE_ANNIVERSARY 2 #define BE_PRICE 3 #define BE_TEMPLATE_COPY 4 extern class CBgtTemplate; class CBgtEntry { CBgtEntry *next, *last; U0 start; CDate date; U16 type, flags; U32 credit_idx, debit_idx, desc_idx; F64 amount; U0 end; U8 *credit, *debit, *desc; CBgtTemplate *template; CDocEntry *doc_e; } b_head; #define BE_SIZE (offset(CBgtEntry.end) - offset(CBgtEntry.start)) #define BT_NULL 0 #define BT_INTERVAL 1 #define BT_MONTHLY 2 #define BT_BIMONTHLY 3 #define BT_SEMIANNUAL 4 #define BT_ANNUAL 5 DefineListLoad("ST_BGT_TEMPLATE_TYPES", "Null\0Interval\0Monthly\0Bimonthly\0Semiannual\0Annual\0"); class CBgtTemplate { CBgtTemplate *next, *last; U0 start; U16 type format "$LS,D=\"ST_BGT_TEMPLATE_TYPES\"$\n"; U16 flags; U8 start_date[16] format "$DA-P,A=\"Start Date:%s\"$\n"; U8 end_date[16] format "$DA-P,A=\"End Date :%s\"$\n"; F64 period format "$DA,A=\"Period :%8.2f\"$\n"; U0 end; CBgtEntry b; } t_head; #define BT_SIZE (offset(CBgtTemplate.end) - offset(CBgtTemplate.start)) U8 view_acct[512]; CHashTable *accts_table = NULL; I64 accts_table_strs = 0; CDate MyStr2Date(U8 *st) { CDateStruct ds; CDate res; if (st && *st) { if (StrOcc(st, '[')) res = b_head.next->date; else if (StrOcc(st, ']')) res = b_head.last->date; else res = Str2Date(st); } else res = Now; Date2Struct(&ds, res); if (ds.year > 2050) ds.year -= 100; return Struct2Date(&ds); }