source: nastroje/prevod_osnovy/UMainForm.pas

Last change on this file was 10, checked in by chronos, 13 years ago
  • program pro převod csv z navisionu
  • program pro převod účtové osnovy z helios red
File size: 4.5 KB
Line 
1unit UMainForm;
2
3{$mode objfpc}{$H+}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
9
10type
11
12 { TForm1 }
13
14 TForm1 = class(TForm)
15 Memo1: TMemo;
16 procedure FormShow(Sender: TObject);
17 private
18 { private declarations }
19 public
20 { public declarations }
21 end;
22
23var
24 Form1: TForm1;
25
26implementation
27
28{$R *.lfm}
29
30{ TForm1 }
31
32procedure TForm1.FormShow(Sender: TObject);
33var
34 Source, Dest: TStringList;
35 I: Integer;
36 SourceLine, DestLine: TStringList;
37 Typ: TStringList;
38 UserType: string;
39 Sub: string;
40 SubUnderline: string;
41 SubSpace: string;
42 SubName: string;
43begin
44 try
45 Typ := TStringList.Create;
46 Typ.Add('A=active');
47 Typ.Add('P=passive');
48 Typ.Add('N=expenses');
49 Typ.Add('V=incomes');
50 Typ.Add('=result');
51
52 Source := TStringList.Create;
53 Dest := TStringList.Create;
54 SourceLine := TStringList.Create;
55 DestLine := TStringList.Create;
56
57 Dest.Add('<?xml version="1.0" encoding="utf-8"?>');
58 Dest.Add('<openerp>');
59 Dest.Add('<data noupdate="1">');
60
61 Dest.Add('<record id="' +
62 'account_template_root" model="account.account.template">');
63 Dest.Add(' <field name="code">root</field>');
64 Dest.Add(' <field name="name">Kořenový účet</field>');
65 Dest.Add(' <field name="parent_id" ref=""/>');
66 Dest.Add(' <field name="type">view</field>');
67 Dest.Add(' <field name="user_type" ref="active"/>');
68 Dest.Add('</record>');
69
70 Source.LoadFromFile('osnova_tridy.csv');
71 for I := 0 to Source.Count - 1 do begin
72 SourceLine.CommaText := Source[I];
73 Dest.Add('<record id="' +
74 'account_template_' + Trim(SourceLine[0]) +
75 '" model="account.account.template">');
76 Dest.Add(' <field name="code">' + Trim(SourceLine[0]) + '</field>');
77 Dest.Add(' <field name="name">' + Trim(SourceLine[1]) + '</field>');
78 Dest.Add(' <field name="parent_id" ref="account_template_root"/>');
79 Dest.Add(' <field name="type">view</field>');
80 Dest.Add(' <field name="user_type" ref="active"/>');
81 Dest.Add('</record>');
82 end;
83
84 Source.LoadFromFile('osnova_skupiny.csv');
85 for I := 0 to Source.Count - 1 do begin
86 SourceLine.CommaText := Source[I];
87 Dest.Add('<record id="' +
88 'account_template_' + Trim(SourceLine[0]) +
89 '" model="account.account.template">');
90 Dest.Add(' <field name="code">' + Trim(SourceLine[0]) + '</field>');
91 Dest.Add(' <field name="name">' + Trim(SourceLine[1]) + '</field>');
92 Dest.Add(' <field name="parent_id" ref="' +
93 'account_template_' + Trim(Copy(SourceLine[0], 1, Length(Trim(SourceLine[0])) - 1)) +
94 '"/>');
95 Dest.Add(' <field name="type">view</field>');
96 Dest.Add(' <field name="user_type" ref="active"/>');
97 Dest.Add('</record>');
98 end;
99
100 Source.LoadFromFile('osnova_ucty.csv');
101 for I := 0 to Source.Count - 1 do begin
102
103 SourceLine.CommaText := Source[I];
104 SourceLine[0] := Trim(SourceLine[0]);
105 if Pos(' ', Trim(SourceLine[0])) > 0 then begin
106 Sub := Copy(SourceLine[0], Pos(' ', SourceLine[0]) + 1, 255);
107 SourceLine[0] := Copy(SourceLine[0], 1, Pos(' ', SourceLine[0]) - 1);
108 SubUnderline := '_' + Sub;
109 SubSpace := ' ' + Sub;
110 SubName := ' ' + Trim(SourceLine[4]);
111 end else begin
112 Sub := '';
113 SubUnderline := '';
114 SubSpace := '';
115 SubName := '';;
116 end;
117
118 Dest.Add('<record id="' +
119 'account_template_' + Trim(SourceLine[0]) + SubUnderline +
120 '" model="account.account.template">');
121 Dest.Add(' <field name="code">' + Trim(SourceLine[0]) + SubSpace + '</field>');
122 Dest.Add(' <field name="name">' + Trim(SourceLine[3]) + SubName + '</field>');
123 Dest.Add(' <field name="parent_id" ref="' +
124 'account_template_' + Trim(Copy(SourceLine[0], 1, Length(Trim(SourceLine[0])) - 1)) +
125 '"/>');
126 Dest.Add(' <field name="type">view</field>');
127 UserType := Typ.Values[Trim(SourceLine[1])];
128 if UserType = '' then UserType := 'result';
129
130 Dest.Add(' <field name="user_type" ref="' + UserType + '"/>');
131 Dest.Add('</record>');
132 Memo1.Lines.Add(IntToStr(SourceLine.Count) + ': ' + SourceLine[1] + ' => ' + Typ.Values[SourceLine[1]]);
133
134 end;
135
136 Dest.Add('</data>');
137 Dest.Add('</openerp>');
138
139 Dest.SaveToFile('account_template.xml');
140 finally
141 SourceLine.Free;
142 DestLine.Free;
143 Source.Free;
144 Dest.Free;
145 Typ.Free;
146 end;
147end;
148
149end.
150
Note: See TracBrowser for help on using the repository browser.