~ubuntu-branches/debian/jessie/bgfinancas/jessie

« back to all changes in this revision

Viewing changes to src/Movimentacoes/Receitas.java

  • Committer: Package Import Robot
  • Author(s): Jose Robson Mariano Alves
  • Date: 2014-09-24 15:01:45 UTC
  • Revision ID: package-import@ubuntu.com-20140924150145-le88tcphc5vmc8sh
Tags: upstream-2.0
ImportĀ upstreamĀ versionĀ 2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright 2010, 2012, 2014 Jose Robson Mariano Alves
 
3
 
 
4
This file is part of bgfinancas.
 
5
 
 
6
This program is free software: you can redistribute it and/or modify
 
7
it under the terms of the GNU General Public License as published by
 
8
the Free Software Foundation, either version 3 of the License, or
 
9
(at your option) any later version.
 
10
 
 
11
This package is distributed in the hope that it will be useful,
 
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
GNU General Public License for more details.
 
15
 
 
16
You should have received a copy of the GNU General Public License
 
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
 
18
 
 
19
*/
 
20
 
 
21
package Movimentacoes;
 
22
 
 
23
import Biblioteca.Botoes;
 
24
import Biblioteca.Calendario;
 
25
import Biblioteca.Datas;
 
26
import Biblioteca.Formularios;
 
27
import Biblioteca.Janela;
 
28
import Biblioteca.Janelinha;
 
29
import Biblioteca.Mascaras;
 
30
import Biblioteca.NotacaoInternacional;
 
31
import Biblioteca.Numeros;
 
32
import Biblioteca.Visual;
 
33
import Principal.TelaPrincipal;
 
34
import java.sql.SQLException;
 
35
import java.util.Calendar;
 
36
 
 
37
public final class Receitas extends Janela {
 
38
 
 
39
    private String Acao;
 
40
    private Mascaras mascaras;
 
41
    private String id_receita;
 
42
    private Float valor_antigo;
 
43
    private final TelaPrincipal Principal;
 
44
    
 
45
    public Receitas(TelaPrincipal principal) {
 
46
        initComponents();
 
47
        Principal = principal;
 
48
        Visual.Janela(this.getJanela());
 
49
        BarraDeFerramentas.add(Botoes.Cadastrar(this));
 
50
        BarraDeFerramentas.add(Botoes.Alterar(this));
 
51
        BarraDeFerramentas.add(Botoes.Excluir(this));
 
52
        BarraDeFerramentas.add(Botoes.Consultar(this));
 
53
        BarraDeFerramentas.add(Botoes.Sair(this));
 
54
        PreencherFormulario(null,null);
 
55
    }
 
56
 
 
57
    public void AdicionarItem(String item_nome)
 
58
    {
 
59
        item.removeAllItems();
 
60
        item.addItem(item_nome);
 
61
    }
 
62
 
 
63
    public void PreencherContas()
 
64
    {
 
65
        try
 
66
        {
 
67
            Banco.executeQuery("SELECT nome FROM contas WHERE ativada='0' ORDER BY nome ASC");
 
68
            conta.addItem(Lingua.getMensagem("selecione"));
 
69
            while(Banco.getResultSet().next())
 
70
            {
 
71
                conta.addItem(Banco.getResultSet().getString("nome"));
 
72
            }
 
73
        }catch(SQLException e)
 
74
        {
 
75
            conta.addItem(Lingua.getMensagem("nenhum_item_encontrado"));
 
76
        }
 
77
    }
 
78
 
 
79
    public void PreencherItens()
 
80
    {
 
81
        try
 
82
        {
 
83
            Banco.executeQuery("SELECT nome FROM receitas_itens ORDER BY nome ASC");
 
84
            item.addItem(Lingua.getMensagem("selecione"));
 
85
            while(Banco.getResultSet().next())
 
86
            {
 
87
                item.addItem(Banco.getResultSet().getString("nome"));
 
88
            }
 
89
        }catch(SQLException e)
 
90
        {
 
91
            conta.addItem(Lingua.getMensagem("nenhum_item_encontrado"));
 
92
        }
 
93
    }
 
94
 
 
95
    public void PreencherFormulario(String acao, String receitas_id)
 
96
    {
 
97
        Acao = acao;
 
98
        id_receita = receitas_id;
 
99
        Formularios.LimparFormulario(JPanelProduto);
 
100
        BFinalizar.setVisible(true);
 
101
        conta.removeAllItems();
 
102
        item.removeAllItems();
 
103
        if(Acao==null)
 
104
        {
 
105
            BFinalizar.setText(Lingua.getMensagem("aguardando_acao"));
 
106
            BFinalizar.setEnabled(false);
 
107
            Formularios.DesativarFormulario(JPanelProduto);
 
108
        }else{
 
109
            BFinalizar.setText(Acao);
 
110
            BFinalizar.setEnabled(true);
 
111
            Formularios.AtivarFormulario(JPanelProduto);
 
112
            if(acao.equals(Lingua.getMensagem("cadastrar")))
 
113
            {
 
114
                PreencherContas();
 
115
                PreencherItens();
 
116
                int dia,mes,ano;
 
117
                Calendar Data = Calendar.getInstance();
 
118
                dia = Data.get(Calendar.DAY_OF_MONTH);
 
119
                mes = Data.get(Calendar.MONTH)+1;
 
120
                ano = Data.get(Calendar.YEAR);
 
121
                data.setSelectedItem(String.format("%02d", dia)+"/"+String.format("%02d", mes)+"/"+ano);
 
122
            }else{
 
123
                BItemPesquisar.setEnabled(false);
 
124
                if(acao.equals(Lingua.getMensagem("consultar")))
 
125
                {
 
126
                    BFinalizar.setVisible(false);
 
127
                }
 
128
                Banco.executeQuery("SELECT receitas.*, receitas_itens.nome AS item_nome, TO_CHAR(receitas.data,'DD/MM/YYYY') AS data_exibir, contas.nome AS conta_nome FROM receitas, receitas_itens, contas WHERE id_receita='"+id_receita+"' AND receitas.id_item=receitas_itens.id_item AND receitas.id_conta=contas.id_conta");
 
129
                try{
 
130
                    Banco.getResultSet().next();
 
131
                    item.addItem(Banco.getResultSet().getString("item_nome"));
 
132
                    descricao.setText(Banco.getResultSet().getString("descricao"));
 
133
                    valor.setText(Banco.getResultSet().getString("valor"));
 
134
                    valor_antigo = Float.parseFloat(Banco.getResultSet().getString("valor"));
 
135
                    data.setSelectedItem(Banco.getResultSet().getString("data_exibir"));
 
136
                    conta.addItem(Banco.getResultSet().getString("conta_nome"));
 
137
                }catch(SQLException e){
 
138
                    Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
139
                } catch (NumberFormatException e) {
 
140
                    Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
141
                }
 
142
            }
 
143
        }
 
144
    }
 
145
 
 
146
    public void Cadastrar()
 
147
    {
 
148
        String id_conta="0",id_item="0";
 
149
 
 
150
        // id_conta
 
151
        Banco.executeQuery("SELECT id_conta FROM contas WHERE nome='"+conta.getSelectedItem()+"'");
 
152
        try{
 
153
            Banco.getResultSet().next();
 
154
            id_conta = Banco.getResultSet().getString("id_conta");
 
155
        }catch(SQLException e){
 
156
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
157
        }
 
158
 
 
159
        // id_item
 
160
        Banco.executeQuery("SELECT id_item FROM receitas_itens WHERE nome='"+item.getSelectedItem()+"'");
 
161
        try{
 
162
            Banco.getResultSet().next();
 
163
            id_item = Banco.getResultSet().getString("id_item");
 
164
        }catch(SQLException e){
 
165
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
166
        }
 
167
 
 
168
        // cadastrando
 
169
        try{
 
170
            Banco.executeUpdate("INSERT INTO receitas (id_conta,id_item,descricao,valor,data,hora) VALUES('"+id_conta+"','"+id_item+"','"+descricao.getText()+"','"+Numeros.Arrendondar(valor.getText())+"','"+Datas.ConverterData(data.getSelectedItem().toString())+"',NOW())");
 
171
            Banco.executeUpdate("UPDATE contas SET valor=valor+"+Numeros.Arrendondar(valor.getText())+" WHERE id_conta='"+id_conta+"'");
 
172
            Janelinha.Aviso(Lingua.getMensagem("cadastrar"),Lingua.getMensagem("sucesso"));
 
173
            Principal.ContasSaldo();
 
174
            PreencherFormulario(Lingua.getMensagem("cadastrar"),null);
 
175
        }catch(Exception e){
 
176
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
177
        }
 
178
    }
 
179
    
 
180
    public void Alterar()
 
181
    {
 
182
        String id_conta="0";
 
183
        // id_conta
 
184
        Banco.executeQuery("SELECT id_conta FROM contas WHERE nome='"+conta.getSelectedItem()+"'");
 
185
        try{
 
186
            Banco.getResultSet().next();
 
187
            id_conta = Banco.getResultSet().getString("id_conta");
 
188
        }catch(SQLException e){
 
189
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
190
        }
 
191
 
 
192
        // alterar
 
193
        Double valor_atual = Double.parseDouble(valor.getText()),diferenca;
 
194
        diferenca = valor_atual-valor_antigo;
 
195
        try{
 
196
            Banco.executeUpdate("UPDATE receitas SET valor='"+Numeros.Arrendondar(valor.getText())+"', descricao='"+descricao.getText()+"', data='"+Datas.ConverterData(data.getSelectedItem().toString())+"' WHERE id_receita='"+id_receita+"'");
 
197
            // modificando conta
 
198
            Banco.executeUpdate("UPDATE contas SET valor=valor+"+Numeros.Arrendondar(diferenca)+" WHERE id_conta='"+id_conta+"'");
 
199
            Janelinha.Aviso(Lingua.getMensagem("alterar"),Lingua.getMensagem("sucesso"));
 
200
            Principal.ContasSaldo();
 
201
            PreencherFormulario(null,null);
 
202
        }catch(Exception e){
 
203
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
204
        }
 
205
    }
 
206
 
 
207
    public void Excluir()
 
208
    {
 
209
        String id_conta="0";
 
210
        Banco.executeQuery("SELECT id_conta FROM contas WHERE nome='"+conta.getSelectedItem()+"'");
 
211
        try{
 
212
            Banco.getResultSet().next();
 
213
            id_conta = Banco.getResultSet().getString("id_conta");
 
214
        }catch(SQLException e){
 
215
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
216
        }
 
217
        
 
218
        try{
 
219
            if(Banco.executeUpdate("DELETE FROM receitas WHERE id_receita='"+id_receita+"'")>0)
 
220
            {
 
221
                Banco.executeUpdate("UPDATE contas SET valor = valor - "+valor_antigo+" WHERE id_conta='"+id_conta+"'");
 
222
                Janelinha.Aviso(Lingua.getMensagem("excluir"),Lingua.getMensagem("sucesso"));
 
223
                Principal.ContasSaldo();
 
224
                PreencherFormulario(null,null);
 
225
            }else{
 
226
                PreencherFormulario(null,null);
 
227
            }
 
228
        }catch(Exception e){
 
229
            Janelinha.Aviso(Lingua.getMensagem("erro"),Lingua.getMensagem("excecao")+" "+e);
 
230
        }
 
231
    }
 
232
    
 
233
    @Override
 
234
    public void Botoes(String acao)
 
235
    {
 
236
        if(acao.equals(Lingua.getMensagem("cadastrar"))){
 
237
            PreencherFormulario(Lingua.getMensagem("cadastrar"),null);
 
238
        }else if(acao.equals("ItensPesquisar")){
 
239
            new ReceitasItensPesquisar(this).setVisible(true);
 
240
        }else if(acao.equals(Lingua.getMensagem("alterar"))){
 
241
            new ReceitasPesquisar(Principal,this,Lingua.getMensagem("alterar")).setVisible(true);
 
242
        }else if(acao.equals(Lingua.getMensagem("excluir"))){
 
243
            new ReceitasPesquisar(Principal,this,Lingua.getMensagem("excluir")).setVisible(true);
 
244
        }else if(acao.equals(Lingua.getMensagem("consultar"))){
 
245
            new ReceitasPesquisar(Principal,this,Lingua.getMensagem("consultar")).setVisible(true);
 
246
        }else if(acao.equals(Lingua.getMensagem("sair"))){
 
247
            Receitas.this.dispose();
 
248
        }
 
249
    }
 
250
 
 
251
    public boolean ValidarFormulario()
 
252
    {
 
253
        if(item.getSelectedItem().equals(Lingua.getMensagem("selecione")))
 
254
        {
 
255
            Janelinha.Aviso(Lingua.getMensagem("erro"), Lingua.getMensagem("campo_nao_informado")+" "+Lingua.getMensagem("item"));
 
256
            item.requestFocus(true);
 
257
            return false;
 
258
        }else if (valor.getText().equals(""))
 
259
        {
 
260
            Janelinha.Aviso(Lingua.getMensagem("erro"), Lingua.getMensagem("campo_nao_informado")+" "+Lingua.getMensagem("valor"));
 
261
            valor.requestFocus(true);
 
262
            return false;
 
263
        }else if(conta.getSelectedItem().equals(Lingua.getMensagem("selecione")))
 
264
        {
 
265
            Janelinha.Aviso(Lingua.getMensagem("erro"), Lingua.getMensagem("campo_nao_informado")+" "+Lingua.getMensagem("conta"));
 
266
            conta.requestFocus(true);
 
267
            return false;
 
268
        }else{
 
269
            return true;
 
270
        }
 
271
    }
 
272
    
 
273
    /** This method is called from within the constructor to
 
274
     * initialize the form.
 
275
     * WARNING: Do NOT modify this code. The content of this method is
 
276
     * always regenerated by the Form Editor.
 
277
     */
 
278
    @SuppressWarnings("unchecked")
 
279
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
 
280
    private void initComponents() {
 
281
 
 
282
        BarraDeFerramentas = new javax.swing.JToolBar();
 
283
        JPanelProduto = new javax.swing.JPanel();
 
284
        CONTA = new javax.swing.JLabel();
 
285
        DATA = new javax.swing.JLabel();
 
286
        DATA2 = new javax.swing.JLabel();
 
287
        DATA3 = new javax.swing.JLabel();
 
288
        DATA4 = new javax.swing.JLabel();
 
289
        valor = new javax.swing.JTextField();
 
290
        descricao = new javax.swing.JTextField();
 
291
        conta = new javax.swing.JComboBox();
 
292
        BItemPesquisar = new javax.swing.JButton();
 
293
        item = new javax.swing.JComboBox();
 
294
        DATA1 = new javax.swing.JLabel();
 
295
        BFinalizar = new javax.swing.JButton();
 
296
        data = new Calendario(false);
 
297
 
 
298
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
 
299
        setTitle(Lingua.getMensagem("receitas"));
 
300
        setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
 
301
        setForeground(java.awt.Color.cyan);
 
302
        getContentPane().setLayout(null);
 
303
 
 
304
        BarraDeFerramentas.setFloatable(false);
 
305
        BarraDeFerramentas.setRollover(true);
 
306
        getContentPane().add(BarraDeFerramentas);
 
307
        BarraDeFerramentas.setBounds(0, 0, 500, 41);
 
308
 
 
309
        JPanelProduto.setBorder(javax.swing.BorderFactory.createTitledBorder(null, Lingua.getMensagem("dados_receita"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, FonteFinancas, new java.awt.Color(0, 102, 204)));
 
310
        JPanelProduto.setForeground(new java.awt.Color(51, 94, 168));
 
311
        JPanelProduto.setFont(new java.awt.Font("Arial", 0, 11)); // NOI18N
 
312
        JPanelProduto.setLayout(null);
 
313
 
 
314
        CONTA.setFont(FonteFinancas);
 
315
        CONTA.setForeground(new java.awt.Color(51, 94, 168));
 
316
        CONTA.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
 
317
        CONTA.setText(Lingua.getMensagem("conta")+":");
 
318
        JPanelProduto.add(CONTA);
 
319
        CONTA.setBounds(20, 160, 80, 20);
 
320
 
 
321
        DATA.setFont(FonteFinancas);
 
322
        DATA.setForeground(new java.awt.Color(51, 94, 168));
 
323
        DATA.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
 
324
        DATA.setText(Lingua.getMensagem("moeda"));
 
325
        JPanelProduto.add(DATA);
 
326
        DATA.setBounds(110, 100, 30, 20);
 
327
 
 
328
        DATA2.setFont(FonteFinancas);
 
329
        DATA2.setForeground(new java.awt.Color(51, 94, 168));
 
330
        DATA2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
 
331
        DATA2.setText(Lingua.getMensagem("item")+":");
 
332
        JPanelProduto.add(DATA2);
 
333
        DATA2.setBounds(20, 40, 80, 20);
 
334
 
 
335
        DATA3.setFont(FonteFinancas);
 
336
        DATA3.setForeground(new java.awt.Color(51, 94, 168));
 
337
        DATA3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
 
338
        DATA3.setText(Lingua.getMensagem("descricao")+":");
 
339
        JPanelProduto.add(DATA3);
 
340
        DATA3.setBounds(20, 70, 80, 20);
 
341
 
 
342
        DATA4.setFont(FonteFinancas);
 
343
        DATA4.setForeground(new java.awt.Color(51, 94, 168));
 
344
        DATA4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
 
345
        DATA4.setText(Lingua.getMensagem("data")+":");
 
346
        JPanelProduto.add(DATA4);
 
347
        DATA4.setBounds(20, 130, 80, 20);
 
348
 
 
349
        valor.setFont(FonteFinancas);
 
350
        JPanelProduto.add(valor);
 
351
        valor.setBounds(140, 100, 60, 20);
 
352
        valor.setDocument(new Biblioteca.NotacaoInternacional());
 
353
 
 
354
        descricao.setFont(FonteFinancas);
 
355
        JPanelProduto.add(descricao);
 
356
        descricao.setBounds(110, 70, 220, 20);
 
357
 
 
358
        conta.setFont(FonteFinancas);
 
359
        JPanelProduto.add(conta);
 
360
        conta.setBounds(110, 160, 220, 20);
 
361
 
 
362
        BItemPesquisar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/outros/pesquisar.png"))); // NOI18N
 
363
        BItemPesquisar.setBorderPainted(false);
 
364
        BItemPesquisar.setContentAreaFilled(false);
 
365
        BItemPesquisar.addActionListener(new java.awt.event.ActionListener() {
 
366
            public void actionPerformed(java.awt.event.ActionEvent evt) {
 
367
                BItemPesquisarActionPerformed(evt);
 
368
            }
 
369
        });
 
370
        JPanelProduto.add(BItemPesquisar);
 
371
        BItemPesquisar.setBounds(330, 40, 30, 20);
 
372
 
 
373
        item.setFont(FonteFinancas);
 
374
        JPanelProduto.add(item);
 
375
        item.setBounds(110, 40, 220, 20);
 
376
 
 
377
        DATA1.setFont(FonteFinancas);
 
378
        DATA1.setForeground(new java.awt.Color(51, 94, 168));
 
379
        DATA1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
 
380
        DATA1.setText(Lingua.getMensagem("valor")+":");
 
381
        JPanelProduto.add(DATA1);
 
382
        DATA1.setBounds(20, 100, 80, 20);
 
383
 
 
384
        BFinalizar.setFont(FonteFinancas);
 
385
        BFinalizar.setText(Lingua.getMensagem("aguardando_acao"));
 
386
        BFinalizar.setFocusPainted(false);
 
387
        BFinalizar.addActionListener(new java.awt.event.ActionListener() {
 
388
            public void actionPerformed(java.awt.event.ActionEvent evt) {
 
389
                BFinalizarActionPerformed(evt);
 
390
            }
 
391
        });
 
392
        JPanelProduto.add(BFinalizar);
 
393
        BFinalizar.setBounds(110, 190, 110, 20);
 
394
 
 
395
        data.setFont(FonteFinancas);
 
396
        JPanelProduto.add(data);
 
397
        data.setBounds(110, 130, 110, 20);
 
398
 
 
399
        getContentPane().add(JPanelProduto);
 
400
        JPanelProduto.setBounds(20, 60, 377, 230);
 
401
 
 
402
        setSize(new java.awt.Dimension(424, 335));
 
403
        setLocationRelativeTo(null);
 
404
    }// </editor-fold>//GEN-END:initComponents
 
405
 
 
406
private void BFinalizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BFinalizarActionPerformed
 
407
    if(Acao.equals(Lingua.getMensagem("cadastrar"))){
 
408
        if(ValidarFormulario() && Janelinha.Pergunta(Lingua.getMensagem("cadastrar"),Lingua.getMensagem("tem_certeza")))
 
409
        {
 
410
            Cadastrar();
 
411
        }
 
412
    }else if(Acao.equals(Lingua.getMensagem("alterar"))){
 
413
        if(ValidarFormulario() && Janelinha.Pergunta(Lingua.getMensagem("alterar"),Lingua.getMensagem("tem_certeza")))
 
414
        {
 
415
            Alterar();
 
416
        }
 
417
    }else if(Acao.equals(Lingua.getMensagem("excluir")))
 
418
    {
 
419
        if(Janelinha.Pergunta(Lingua.getMensagem("excluir"),Lingua.getMensagem("tem_certeza")))
 
420
        {
 
421
            Excluir();
 
422
        }
 
423
    }
 
424
}//GEN-LAST:event_BFinalizarActionPerformed
 
425
 
 
426
private void BItemPesquisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BItemPesquisarActionPerformed
 
427
    Botoes("ItensPesquisar");
 
428
}//GEN-LAST:event_BItemPesquisarActionPerformed
 
429
 
 
430
    // Variables declaration - do not modify//GEN-BEGIN:variables
 
431
    private javax.swing.JButton BFinalizar;
 
432
    private javax.swing.JButton BItemPesquisar;
 
433
    private javax.swing.JToolBar BarraDeFerramentas;
 
434
    private javax.swing.JLabel CONTA;
 
435
    private javax.swing.JLabel DATA;
 
436
    private javax.swing.JLabel DATA1;
 
437
    private javax.swing.JLabel DATA2;
 
438
    private javax.swing.JLabel DATA3;
 
439
    private javax.swing.JLabel DATA4;
 
440
    private javax.swing.JPanel JPanelProduto;
 
441
    private javax.swing.JComboBox conta;
 
442
    private javax.swing.JComboBox data;
 
443
    private javax.swing.JTextField descricao;
 
444
    private javax.swing.JComboBox item;
 
445
    private javax.swing.JTextField valor;
 
446
    // End of variables declaration//GEN-END:variables
 
447
 
 
448
}