[31m-- Skywalker is another attempt of A. i. written with Ada.[m
[31m-- Skywalker is Copyright (C) 2024 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 := "2024-11-13 06:51:20"[m
[31m-- Version := "0.0.10r"[m
[01;34mwith[m Ada[31m.[mCalendar[31m;[m
[01;34muse[m Ada[31m.[mCalendar[31m;[m
[01;34mwith[m Sky[31m.[mBalance[31m;[m
[01;34muse[m Sky[31m.[mBalance[31m;[m
[01;34mpackage[m Sky[31m.[mAccountant [01;34mis[m
   [01;34msubtype[m Account_Line_range [01;34mis[m Natural [01;34mrange[m Natural[31m'First..Natural'[mLast[31m;[m
   
   
   
   [01;34mtype[m Account_Line_Type [01;34mis[m
      [01;34mrecord[m
	 Line_Num      [31m:[m Account_Line_Range [31m:=[m [35m0[m[31m;[m
	 Date          [31m:[m Time [31m:=[m Clock[31m;[m
	 Elaps         [31m:[m Time [31m:=[m Clock[31m;[m
	 Description   [31m:[m Wstring_32 [31m:=[m [31m([m[01;34mothers[m [31m=>[m [31m' '[m[31m);[m
	 Account_num   [31m:[m Account_Num_Range [31m:=[m [35m10[m[31m;[m
	 Unit_Ht_Price [31m:[m Fixed_Unit_Ht [31m:=[m [35m0.0[m[31m;[m	 
	 TVA_Rate    [31m:[m Fixed_Factor [31m:=[m [35m0.0[m[31m;[m
	 Quantity      [31m:[m Quantity_Range [31m:=[m [35m0.0[m[31m;[m
	 Total_Ht      [31m:[m Fixed_Total [31m:=[m [35m0.0[m[31m;[m
	 Total_TVA     [31m:[m Fixed_Total [31m:=[m [35m0.0[m[31m;[m
	 Total_Ttc     [31m:[m Fixed_Total [31m:=[m [35m0.0[m[31m;[m
	 Delays        [31m:[m Payment_Delay [31m:=[m [35m0[m[31m;[m
	 Peer_name     [31m:[m Wstring_32 [31m:=[m [31m([m[01;34mothers[m [31m=>[m [31m' '[m[31m);[m	 
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   [01;34mtype[m [01;30mAbstracted_Voice[m[31m([mLines_Max [31m:[m Account_Line_Range[31m);[m
   
   
   
   
   
   Null_Line [31m:[m [01;34mconstant[m Account_Line_Type [31m:=[m
     [31m([m[35m0[m[31m,[m
      [01;30mTime_Of[m[31m([m[35m1970[m[31m,[m [35m01[m[31m,[m [35m01[m[31m,[m [35m0.0[m[31m),[m
      [01;30mTime_Of[m[31m([m[35m1970[m[31m,[m [35m01[m[31m,[m [35m01[m[31m,[m [35m0.0[m[31m),[m
      [31m([m[01;34mothers[m [31m=>[m Wide_Character'[01;30mVal[m[31m([m[35m32[m[31m)),[m
      [35m10[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0[m[31m,[m
      [31m([m[01;34mothers[m [31m=>[m Wide_Character'[01;30mVal[m[31m([m[35m32[m[31m))[m
     [31m);[m
   
   
   [01;34mtype[m Account_Line_Array [01;34mis[m [01;34marray[m [31m([mAccount_Line_Range [01;34mrange[m [31m<>)[m [01;34mof[m Account_Line_Type[31m;[m
   
   
   [01;34mtype[m [01;30mAbstracted_Voice[m[31m([mLines_Max [31m:[m Account_Line_Range[31m)[m [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Accounting     [31m:[m [01;30mAccount_Line_Array[m[31m([m[35m1[m[31m..[mLines_Max[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m Null_Line[31m);[m	 
	 Line_Last      [31m:[m Account_Line_Range [31m:=[m [35m0[m[31m;[m
	 Account_Num    [31m:[m Account_Num_Range [31m:=[m [35m10[m[31m;[m
	 Voice_Num      [31m:[m Voice_Num_Range [31m:=[m [35m0[m[31m;[m
	 Total_Ht       [31m:[m Fixed_Total [31m:=[m [35m0.0[m[31m;[m
	 Total_TVA      [31m:[m Fixed_Total [31m:=[m [35m0.0[m[31m;[m
	 Total_TTC      [31m:[m Fixed_Total [31m:=[m [35m0.0[m[31m;[m
	 Peer_Name      [31m:[m Wstring_32 [31m:=[m [31m([m[01;34mothers[m [31m=>[m [31m' '[m[31m);[m
	 Date           [31m:[m Time [31m:=[m [01;30mTime_Of[m[31m([m[35m1970[m[31m,[m [35m1[m[31m,[m [35m1[m[31m,[m [35m0.0[m[31m);[m
	 Line_Count     [31m:[m Account_Line_Range [31m:=[m [35m0[m[31m;[m
      [01;34mend[m [01;34mrecord[m[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;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;34mfunction[m [01;30mSave[m[31m([mvoice [31m:[m [01;34min[m Abstracted_Voice'Class[31m;[m File_Name [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m [01;34mabstract[m[31m;[m
   [01;34mfunction[m [01;30mIs_Payed[m[31m([mvoice [31m:[m [01;34min[m Abstracted_Voice'Class[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m [01;34mabstract[m[31m;[m
   
   
   
   
   
   [01;34mtype[m Invoice_record [01;34mis[m [01;34mnew[m [01;30mAbstracted_Voice[m[31m([m[35m256[m[31m)[m [01;34mwith[m [01;34mnull[m [01;34mrecord[m[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[31m;[m
   
   
   [01;34mtype[m Outvoice_Record [01;34mis[m [01;34mnew[m [01;30mAbstracted_Voice[m[31m([m[35m256[m[31m)[m [01;34mwith[m [01;34mnull[m [01;34mrecord[m[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[31m;[m   
   
   [01;34mtype[m Invoice_Array [01;34mis[m [01;34marray[m [31m([mVoice_Num_Range [01;34mrange[m [31m<>)[m [01;34mof[m Invoice_Record[31m;[m
   [01;34mtype[m Outvoice_Array [01;34mis[m [01;34marray[m [31m([mVoice_Num_Range [01;34mrange[m [31m<>)[m [01;34mof[m Outvoice_Record[31m;[m
     
   [01;34mtype[m [01;30mAccounting_Record[m[31m([mDeal_Max [31m:[m Positive[31m)[m [01;34mis[m
      [01;34mrecord[m
	 Billed  [31m:[m [01;30mInvoice_Array[m[31m([m[35m1[m[31m..[mDeal_Max[31m);[m
	 Invoice_Last [31m:[m Natural [31m:=[m [35m0[m[31m;[m
	 Charges [31m:[m [01;30moutvoice_Array[m[31m([m[35m1[m[31m..[mDeal_Max[31m);[m
	 Outvoice_Last [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      [01;34mend[m [01;34mrecord[m[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;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;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;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;34mfunction[m [01;30mIs_Payed[m[31m([mvoice [31m:[m [01;34min[m Invoice_Record'Class[31m)[m [01;34mreturn[m [32mBoolean[m[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[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
   [31m-- Write all account_line to States.[m
   [31m-- Check Outvoice with accounting.[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
   [31m-- if Is_Payed(Invoice) then must be added to to account num[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
   [31m-- if Is_Payed(Outvoice) then must be added to to account num[m
   
   
   Null_Invoice [31m:[m [01;34mconstant[m Invoice_Record [31m:=[m
     [31m([m[35m256[m[31m,[m
      [31m([m[01;34mothers[m [31m=>[m Null_Line[31m),[m
      [35m0[m[31m,[m
      [35m607[m[31m,[m      
      [35m0[m[31m,[m      
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [31m([m[01;34mothers[m [31m=>[m [31m' '[m[31m),[m      
      [01;30mTime_Of[m[31m([m[35m1970[m[31m,[m [35m1[m[31m,[m [35m1[m[31m,[m [35m0.0[m[31m),[m
      [35m0[m
     [31m);[m
   
   Null_Outvoice [31m:[m [01;34mconstant[m Outvoice_Record [31m:=[m
     [31m([m[35m256[m[31m,[m [31m([m[01;34mothers[m [31m=>[m Null_Line[31m),[m
      [35m0[m[31m,[m
      [35m707[m[31m,[m
      [35m0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [35m0.0[m[31m,[m
      [31m([m[01;34mothers[m [31m=>[m [31m' '[m[31m),[m
      [01;30mTime_Of[m[31m([m[35m1970[m[31m,[m [35m1[m[31m,[m [35m1[m[31m,[m [35m0.0[m[31m),[m
      [35m0[m
      [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;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;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;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
   
   
   Accounts        [31m:[m [01;30mAccounting_Record[m[31m([m[35m8092[m[31m);[m

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