[31m-- main is main file of main project written with Ada.[m
[31m-- Main is Copyright (C) 2025 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := "2025-06-04 18:32:28"[m
[31m-- Version := "0.0.0r"[m
[01;34mwith[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34muse[m Ada[31m.[mWide_Text_Io[31m;[m
[31m--with Computer.Bank;[m
[01;34mwith[m Gnat[31m.[mOs_Lib[31m;[m
[01;34muse[m Gnat[31m.[mOs_Lib[31m;[m

[01;34mwith[m Ada[31m.[mCalendar[31m.[mFormatting[31m;[m

[01;34mwith[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m
[01;34muse[m Ada[31m.[mCharacters[31m;[m

[01;34mwith[m M[31m.[mErrors[31m;[m
[01;34muse[m M[31m.[mErrors[31m;[m
[01;34mpackage[m [01;34mbody[m M[31m.[mAccountant [01;34mis[m
      [01;34mpackage[m W_Io [01;34mrenames[m Ada[31m.[mWide_Text_Io[31m;[m
   
   
   [01;34mprocedure[m [01;30mCreate[m[31m([mActivity [31m:[m [01;34mout[m Balance_Record[31m;[m
		    From [31m:[m [01;34min[m Outvoice_Record[31m)[m [01;34mis[m
   [31m-- Write all account_line to States.[m
   [31m-- Check Outvoice with accounting.[m
   [01;34mbegin[m
      [01;34mnull[m[31m;[m
   [01;34mend[m Create[31m;[m
   
   [01;34mprocedure[m [01;30mbilled[m[31m([mActivity [31m:[m [01;34min[m [01;34mout[m Balance_Record[31m;[m
		    Invoice [31m:[m [01;34min[m Invoice_Record[31m;[m
		    
		    Payed [31m:[m [01;34mout[m [32mBoolean[m[31m)[m [01;34mis[m
      [31m-- if Is_Payed(Invoice) then must be added to to account num[m
      
   [01;34mbegin[m
      
      

      Payed [31m:=[m [01;30mIs_Payed[m[31m([mInvoice[31m);[m      

      [01;34mif[m Payed [01;34mthen[m

	 Activity[31m.[mTVA_Out [31m:=[m
	   [31m--  Fixed_Total[m
	   [31m--  (Fixed_Total[m
	   [31m--     (Balance.Balance.TVA_in +[m
	   [31m--  	 (Fixed_Total[m
	   [31m--  	    (Fixed_Total(Fixed_Total(Invoice.Total_Ht))) / Fixed_Total(100.0))) * [m
	   [31m--     Fixed_Total(Invoice.TVA_Rate));[m
	   Balance[31m.[mBalance[31m.[mTVA_Out [31m+[m [31m([m[01;30mFixed_Total[m[31m([mInvoice[31m.[mTotal_TTC [31m-[m Invoice[31m.[mTotal_Ht[31m));[m

	 Activity[31m.[mCapital [31m:=[m 
	   Activity[31m.[mCapital [31m-[m Invoice[31m.[mTotal_TTC[31m;[m

      [01;34mend[m [01;34mif[m[31m;[m
      
      
   [01;34mend[m Billed[31m;[m
   
   [01;34mprocedure[m [01;30mCharge[m[31m([mActivity [31m:[m [01;34min[m [01;34mout[m Balance_Record[31m;[m
		    Outvoice [31m:[m [01;34min[m Outvoice_Record[31m;[m
		    
		    Payed [31m:[m [01;34mout[m [32mBoolean[m[31m)[m [01;34mis[m
      [31m-- if Is_Payed(Outvoice) then must be added to to account num[m
      
   [01;34mbegin[m
      
      
      Payed [31m:=[m [01;30mIs_Payed[m[31m([mOutvoice[31m);[m
      
      [01;34mif[m Payed [01;34mthen[m
	 
	 Activity[31m.[mTVA_in [31m:=[m Activity[31m.[mTVA_In [31m+[m Outvoice[31m.[mTotal_Tva[31m;[m
	 

	 Activity[31m.[mMaterial [31m:=[m 
	   Activity[31m.[mMaterial [31m+[m Outvoice[31m.[mTotal_TTC[31m;[m
	 

      [01;34mend[m [01;34mif[m[31m;[m
      
   [01;34mend[m Charge[31m;[m
   
   [01;34mprocedure[m [01;30mOpen[m[31m([mActivity [31m:[m [01;34min[m [01;34mout[m Balance_Record[31m;[m
		  Accounting_States [31m:[m [01;34min[m Accounting_Record[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mnull[m[31m;[m
   [01;34mend[m Open[31m;[m
     
   
   [01;34mprocedure[m [01;30mClose[m[31m([mActivity [31m:[m [01;34min[m [01;34mout[m Balance_Record[31m;[m
		   Accounting_States [31m:[m [01;34min[m Accounting_Record[31m)[m [01;34mis[m
      Tmp [31m:[m Fixed_Total [31m:=[m Activity[31m.[mMaterial[31m;[m
   [01;34mbegin[m
      Activity[31m.[mMaterial [31m:=[m [31m([mTmp [31m-[m Activity[31m.[mTVA_In[31m)[m [31m+[m Activity[31m.[mTVA_Out[31m;[m
      
      Activity[31m.[mCapital [31m:=[m Activity[31m.[mCapital [31m+[m Activity[31m.[mMaterial[31m;[m
      
      Activity[31m.[mTVA_In [31m:=[m [35m0.0[m[31m;[m      
      Activity[31m.[mTVA_Out [31m:=[m [35m0.0[m[31m;[m
      Activity[31m.[mMaterial [31m:=[m [35m0.0[m[31m;[m
      
   [01;34mend[m Close[31m;[m
   
      
   [01;34mfunction[m [01;30mIs_Payed[m[31m([mVoice [31m:[m [01;34min[m Invoice_Record'Class[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
      Payed [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
   [01;34mbegin[m
      [01;34mif[m Voice[31m.[mTotal_TTC [31m=[m [35m0.0[m [01;34mthen[m
	 [01;34mreturn[m True[31m;[m
      [01;34melsif[m Balance[31m.[mBalance[31m.[mCapital [31m>=[m Voice[31m.[mTotal_TTC [01;34mthen[m
	 [01;34mreturn[m True[31m;[m
      [01;34melse[m
	 W_Io[31m.[m[01;30mPut_Line[m[31m([mHandling[31m.[m[01;30mTo_Wide_String[m[31m([mFixed_Total[31m'Image(Balance.Balance.Capital) & "<" & Fixed_Total'[m[01;30mImage[m[31m([mVoice[31m.[mTotal_TTC[31m)));[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mreturn[m Payed[31m;[m
   [01;34mend[m Is_Payed[31m;[m
     
   [01;34mfunction[m [01;30mIs_Payed[m[31m([mVoice [31m:[m [01;34min[m Outvoice_Record'Class[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
      Payed [31m:[m [32mBoolean[m [31m:=[m True[31m;[m
   [01;34mbegin[m
      [01;34mreturn[m Payed[31m;[m
   [01;34mend[m Is_Payed[31m;[m
   
   [01;34mprocedure[m [01;30mLine_Add[m [31m([mTo [31m:[m [01;34min[m [01;34mout[m Abstracted_Voice[31m;[m
		       Line [31m:[m [01;34min[m Account_Line_Type[31m)[m [01;34mis[m
   [01;34mbegin[m
      To[31m.[m[01;30mAccounting[m[31m([mTo[31m.[mLine_Last [31m+[m [35m1[m[31m)[m [31m:=[m Line[31m;[m      
      To[31m.[mLine_Last [31m:=[m To[31m.[mLine_Last [31m+[m [35m1[m[31m;[m
      To[31m.[mTotal_Ht [31m:=[m To[31m.[mTotal_HT [31m+[m Line[31m.[mTotal_HT[31m;[m
      To[31m.[mTotal_TTC [31m:=[m To[31m.[mTotal_TTC [31m+[m Line[31m.[mTotal_TTC[31m;[m
      To[31m.[mTotal_TVA [31m:=[m To[31m.[mTotal_TVA [31m+[m Line[31m.[mTotal_TVA[31m;[m      
   [01;34mend[m Line_Add[31m;[m
   
   [01;34mprocedure[m [01;30mLine_Remove[m [31m([mTo [31m:[m [01;34min[m [01;34mout[m Abstracted_Voice[31m;[m
			  Line_Num [31m:[m [01;34min[m Account_Line_Range[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m Line_Num [31m=[m [35m0[m [01;34mor[m Line_Num [31m>[m To[31m.[mLine_Last [01;34mthen[m
	 [01;34mraise[m Spec_Error[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mfor[m Line [01;34min[m [35m1[m[31m..[mTo[31m.[mLine_Last [01;34mloop[m
	 [01;34mif[m To[31m.[m[01;30mAccounting[m[31m([mLine[31m).[mLine_Num [31m=[m Line_Num [01;34mthen[m
	    
	    To[31m.[mTotal_Ht [31m:=[m To[31m.[mTotal_Ht [31m-[m To[31m.[m[01;30mAccounting[m[31m([mLine[31m).[mTotal_Ht[31m;[m
	    To[31m.[mTotal_TVA [31m:=[m To[31m.[mTotal_TVA [31m-[m To[31m.[m[01;30mAccounting[m[31m([mLine[31m).[mTotal_TVA[31m;[m
	    To[31m.[mTotal_TTC [31m:=[m To[31m.[mTotal_TTC [31m-[m To[31m.[m[01;30mAccounting[m[31m([mLine[31m).[mTotal_TTC[31m;[m
	    
	    [01;34mfor[m Iter [01;34min[m Line[31m..[mTo[31m.[mLine_Last [31m-[m [35m1[m [01;34mloop[m
	       To[31m.[m[01;30mAccounting[m[31m([mIter[31m)[m [31m:=[m To[31m.[m[01;30mAccounting[m[31m([mIter [31m+[m [35m1[m[31m);[m
	    [01;34mend[m [01;34mloop[m[31m;[m
	    To[31m.[m[01;30mAccounting[m[31m([mTo[31m.[mLine_Last[31m)[m [31m:=[m Null_Line[31m;[m
	    To[31m.[mLine_Last [31m:=[m To[31m.[mLine_Last [31m-[m [35m1[m[31m;[m
	    [01;34mexit[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      
      [31m--  To.Total_Ht := To.Total_Ht - To.Accounting(Line_Num).Total_Ht;[m
      [31m--  To.Total_TTC := To.Total_TTC - To.Accounting(Line_Num).Total_TTC;[m
      [31m--  To.Total_TVA := To.Total_TVA - To.Accounting(Line_Num).Total_TVA;[m
      
      [31m--  for Iter in Line_Num..To.Line_Last - 1 loop[m
      [31m--  	 To.Accounting(Iter) := To.Accounting(Iter + 1);[m
      [31m--  end loop;[m
      [31m--  To.Accounting(To.Line_Last) := Null_Line;[m
      [31m--  To.Line_Last := To.Line_Last - 1;[m
	 
   [01;34mend[m Line_Remove[31m;[m
   
   [01;34mprocedure[m [01;30mAdd[m[31m([mTo [31m:[m [01;34min[m [01;34mout[m Accounting_Record[31m;[m
		 Invoice [31m:[m [01;34min[m Invoice_Record[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m To[31m.[mInvoice_Last [31m<[m To[31m.[mBilled'Length [01;34mthen[m
	 To[31m.[m[01;30mBilled[m[31m([mTo[31m.[mInvoice_Last [31m+[m [35m1[m[31m)[m [31m:=[m Invoice[31m;[m
	 To[31m.[mInvoice_Last [31m:=[m To[31m.[mInvoice_Last [31m+[m [35m1[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
   [01;34mend[m Add[31m;[m
   [01;34mprocedure[m [01;30mAdd[m[31m([mTo [31m:[m [01;34min[m [01;34mout[m Accounting_Record[31m;[m
		 Outvoice [31m:[m [01;34min[m Outvoice_Record[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m To[31m.[moutvoice_Last [31m<[m To[31m.[mCharges'Length [01;34mthen[m
	 To[31m.[m[01;30mCharges[m[31m([mTo[31m.[mOutvoice_Last [31m+[m [35m1[m[31m)[m [31m:=[m Outvoice[31m;[m
	 To[31m.[mOutvoice_Last [31m:=[m To[31m.[mOutvoice_Last [31m+[m [35m1[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Add[31m;[m
   
   [01;34mprocedure[m [01;30mInvoice_Remove[m[31m([mTo [31m:[m [01;34min[m [01;34mout[m Accounting_Record[31m;[m
			    Invoice_num [31m:[m [01;34min[m Voice_Num_Range[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m To[31m.[mInvoice_Last [31m/=[m [35m0[m [01;34mthen[m
	 [01;34mfor[m Voice [01;34min[m [35m1[m[31m..[mTo[31m.[mInvoice_Last [01;34mloop[m
	    [01;34mif[m To[31m.[m[01;30mBilled[m[31m([mVoice[31m).[mvoice_Num [31m=[m Invoice_Num [01;34mthen[m
	       [01;34mfor[m Iter [01;34min[m Voice[31m..[mTo[31m.[minVoice_Last [31m-[m [35m1[m [01;34mloop[m
		  To[31m.[m[01;30mBilled[m[31m([mIter[31m)[m [31m:=[m To[31m.[m[01;30mBilled[m[31m([mIter [31m+[m [35m1[m[31m);[m
		  
	       [01;34mend[m [01;34mloop[m[31m;[m
	       To[31m.[m[01;30mBilled[m[31m([mTo[31m.[minVoice_Last[31m)[m [31m:=[m Null_Invoice[31m;[m
	       To[31m.[minvoice_Last [31m:=[m To[31m.[minvoice_Last [31m-[m [35m1[m[31m;[m		 
	       [01;34mexit[m[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Invoice_Remove[31m;[m
   [01;34mprocedure[m [01;30mOutvoice_Remove[m[31m([mTo [31m:[m [01;34min[m [01;34mout[m Accounting_Record[31m;[m
		    Outvoice_num [31m:[m [01;34min[m Voice_Num_range[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m To[31m.[mOutvoice_Last [31m/=[m [35m0[m [01;34mthen[m
	 [01;34mfor[m Voice [01;34min[m [35m1[m[31m..[mTo[31m.[mOutvoice_Last [01;34mloop[m
	    [01;34mif[m To[31m.[m[01;30mCharges[m[31m([mVoice[31m).[mvoice_Num [31m=[m Outvoice_Num [01;34mthen[m
	       [01;34mfor[m Iter [01;34min[m Voice[31m..[mTo[31m.[moutvoice_Last [31m-[m [35m1[m [01;34mloop[m
		  To[31m.[m[01;30mCharges[m[31m([mIter[31m)[m [31m:=[m To[31m.[m[01;30mCharges[m[31m([mIter [31m+[m [35m1[m[31m);[m
		  
	       [01;34mend[m [01;34mloop[m[31m;[m
	       To[31m.[m[01;30mCharges[m[31m([mTo[31m.[moutvoice_Last[31m)[m [31m:=[m Null_Outvoice[31m;[m
	       To[31m.[moutvoice_Last [31m:=[m To[31m.[moutvoice_Last [31m-[m [35m1[m[31m;[m		 
	       [01;34mexit[m[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Outvoice_Remove[31m;[m
   
   
   [01;34mprocedure[m [01;30mVoice_Save[m[31m([mVoice [31m:[m [01;34min[m Abstracted_Voice[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m W_Io[31m.[mFile_Type[31m;[m
   [01;34mbegin[m
      [01;34mif[m [01;30mIs_Regular_File[m[31m([mFilename[31m)[m [01;34mthen[m
	 W_Io[31m.[m[01;30mOpen[m[31m([mFile[31m,[m W_Io[31m.[mAppend_File[31m,[m Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34melse[m
	 W_Io[31m.[m[01;30mCreate[m[31m([mFile[31m,[m W_Io[31m.[mOut_File[31m,[m Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([mVoice_Num_Range'[01;30mImage[m[31m([mVoice[31m.[mVoice_Num[31m)));[m
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([mAccount_Num_Range'[01;30mImage[m[31m([mVoice[31m.[mAccount_Num[31m)));[m
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([mFixed_Total'[01;30mImage[m[31m([mVoice[31m.[mTotal_Ht[31m)));[m
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([mFixed_Total'[01;30mImage[m[31m([mVoice[31m.[mTotal_TVA[31m)));[m
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([mFixed_Total'[01;30mImage[m[31m([mVoice[31m.[mTotal_TTC[31m)));[m
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Voice[31m.[mPeer_Name[31m);[m
      W_Io[31m.[m[01;30mPut_Line[m[31m([mFile[31m,[m Handling[31m.[m[01;30mTo_Wide_String[m[31m([mFormatting[31m.[m[01;30mImage[m[31m([mVoice[31m.[mDate[31m)));[m
      W_Io[31m.[m[01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Voice_Save[31m;[m
   
   [01;34mfunction[m [01;30mSave[m[31m([mvoice [31m:[m [01;34min[m Invoice_Record[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
   [01;34mbegin[m
      [01;30mVoice_Save[m[31m([m[01;30mAbstracted_Voice[m[31m([mVoice[31m),[m Filename[31m);[m
      [01;34mreturn[m True[31m;[m
   [01;34mexception[m
      [01;34mwhen[m [01;34mothers[m [31m=>[m
	 [01;34mreturn[m False[31m;[m
   [01;34mend[m Save[31m;[m
   [01;34mfunction[m [01;30mSave[m[31m([mvoice [31m:[m [01;34min[m Outvoice_Record[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
   [01;34mbegin[m
      [01;30mVoice_Save[m[31m([m[01;30mAbstracted_Voice[m[31m([mVoice[31m),[m Filename[31m);[m
      [01;34mreturn[m True[31m;[m
   [01;34mexception[m
      [01;34mwhen[m [01;34mothers[m [31m=>[m
	 [01;34mreturn[m False[31m;[m
   [01;34mend[m Save[31m;[m
   
   
   [01;34mprocedure[m [01;30mRestore[m [31m([mVoice [31m:[m [01;34mout[m Abstracted_Voice[31m;[m File [31m:[m [01;34min[m [01;34mout[m W_Io[31m.[mFile_Type[31m)[m [01;34mis[m
   [01;34mbegin[m

      Voice[31m.[mVoice_Num [31m:=[m Voice_Num_Range'[01;30mValue[m[31m([mHandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m)));[m

      Voice[31m.[mAccount_Num [31m:=[m Account_Num_Range'[01;30mValue[m[31m([mHandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m)));[m

      Voice[31m.[mTotal_Ht [31m:=[m Fixed_Total'[01;30mValue[m[31m([mHandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m)));[m

      Voice[31m.[mTotal_TVA [31m:=[m Fixed_Total'[01;30mValue[m[31m([mHandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m)));[m

      Voice[31m.[mTotal_TTC [31m:=[m Fixed_Total'[01;30mValue[m[31m([mHandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m)));[m

      Voice[31m.[mPeer_Name [31m:=[m W_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m);[m

      Voice[31m.[mDate [31m:=[m Formatting[31m.[m[01;30mValue[m[31m([mHandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m)));[m

   [01;34mend[m Restore[31m;[m
   [01;34mprocedure[m [01;30mInvoices_Restore[m[31m([mInvoices [31m:[m [01;34mout[m Invoice_Array[31m;[m Last [31m:[m [01;34mout[m Natural[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m W_Io[31m.[mFile_Type[31m;[m
   [01;34mbegin[m

      [01;34mif[m [01;30mIs_Regular_File[m[31m([mFilename[31m)[m [01;34mthen[m
	 W_Io[31m.[m[01;30mOpen[m[31m([mFile[31m,[m W_Io[31m.[mIn_File[31m,[m Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m

      Last [31m:=[m [35m0[m[31m;[m
      [01;34mwhile[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mloop[m

	 [01;30mRestore[m[31m([m[01;30mAbstracted_Voice[m[31m([m[01;30mInvoices[m[31m([mLast [31m+[m [35m1[m[31m)),[m File[31m);[m
	 Last [31m:=[m Last [31m+[m [35m1[m[31m;[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m
      W_Io[31m.[m[01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Invoices_Restore[31m;[m
   [01;34mprocedure[m [01;30mOutVoices_Restore[m[31m([mOutvoices [31m:[m [01;34mout[m Outvoice_Array[31m;[m Last [31m:[m [01;34mout[m Natural[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m W_Io[31m.[mFile_Type[31m;[m
   [01;34mbegin[m

      [01;34mif[m [01;30mIs_Regular_File[m[31m([mFilename[31m)[m [01;34mthen[m
	 W_Io[31m.[m[01;30mOpen[m[31m([mFile[31m,[m W_Io[31m.[mIn_File[31m,[m Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m

      Last [31m:=[m [35m0[m[31m;[m
      [01;34mwhile[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mloop[m

	 [01;30mRestore[m[31m([m[01;30mAbstracted_Voice[m[31m([m[01;30mOutvoices[m[31m([mLast [31m+[m [35m1[m[31m)),[m File[31m);[m
	 Last [31m:=[m Last [31m+[m [35m1[m[31m;[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m
      W_Io[31m.[m[01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Outvoices_Restore[31m;[m

[01;34mend[m M[31m.[mAccountant [31m;[m 
