1 | <?php
|
---|
2 |
|
---|
3 |
|
---|
4 | /*
|
---|
5 | * Criado em 22/10/2008
|
---|
6 | *
|
---|
7 | * Autor: André Alexandre Ávila/DIDES-C1/Celepar
|
---|
8 | * Projeto NatPHPDC1
|
---|
9 | *
|
---|
10 | */
|
---|
11 | /**
|
---|
12 | * Tipos Padrão
|
---|
13 | * Classe de tipagem padrão para comunicação com mainframe
|
---|
14 | * Manter essa classe sem alterações
|
---|
15 | * Para mudar tipos, criar uma nova classe extendndo essa e passar ao construtor da natphp.
|
---|
16 | *
|
---|
17 | * Situacoes invalidas:
|
---|
18 | * padl e padr no mesmo tipo
|
---|
19 | * str sem arr e vice-versa
|
---|
20 | * type assoc num array input
|
---|
21 | *
|
---|
22 | * Quando utilizar o div:
|
---|
23 | * Quando o Mainframe retorna um valor 1234567890 mas seria 12345678.90 o valor, divide-se por 100
|
---|
24 | * Ao se enviar novamente ao mainframe ele multiplica por 100 e envia
|
---|
25 | *
|
---|
26 | * Prioridade de tratamento:
|
---|
27 | * 1 length
|
---|
28 | * 2 div
|
---|
29 | * 3 array e str
|
---|
30 | * 4 funcarr e funcstr
|
---|
31 | * 5 trim global
|
---|
32 | */
|
---|
33 | class NatType {
|
---|
34 | private $types = array (
|
---|
35 | 'A' => array (
|
---|
36 | 'loop' => true,
|
---|
37 | 'type' =>'num'
|
---|
38 | ),
|
---|
39 | 'AA' => array (
|
---|
40 | 'loop' => true,
|
---|
41 | 'type' =>'assoc'
|
---|
42 | ),
|
---|
43 | 'N' => array (
|
---|
44 | 'padl' => '0'
|
---|
45 | ),
|
---|
46 | 'S' => array (
|
---|
47 | 'padr' => ' '
|
---|
48 | ),
|
---|
49 | 'DATE' => array (
|
---|
50 | 'str' => '%04d%02d%02d',
|
---|
51 | 'arr' => '%04d-%02d-%02d'
|
---|
52 | ),
|
---|
53 | 'DATEBR' => array (
|
---|
54 | 'str' => '%02d%02d%04d',
|
---|
55 | 'arr' => '%02d/%02d/%04d'
|
---|
56 | ),
|
---|
57 | 'DATEDMY' => array (
|
---|
58 | 'str' => '%04d%02d%02d',
|
---|
59 | 'arr' => '%3$02d/%2$02d/%1$04d'
|
---|
60 | ),
|
---|
61 | 'DTIME' => array (
|
---|
62 | 'str' => '%04d%02d%02d%02d%02d%02d',
|
---|
63 | 'arr' => '%04d-%02d-%02d %02d:%02d:%02d'
|
---|
64 | ),
|
---|
65 | 'DT' => array (
|
---|
66 | 'str' => '%04d%02d%02d%02d%02d%02d',
|
---|
67 | 'arr' => '%04d-%02d-%02d %02d:%02d:%02d'
|
---|
68 | ),
|
---|
69 | 'TIME' => array (
|
---|
70 | 'str' => '%02d%02d%02d',
|
---|
71 | 'arr' => '%02d:%02d:%02d'
|
---|
72 | ),
|
---|
73 | 'DEC' => array (
|
---|
74 | 'str' => '%0.2f',
|
---|
75 | 'arr' => '%0.2f',
|
---|
76 | 'div' => 100,
|
---|
77 | 'padl' => '0'
|
---|
78 | ),
|
---|
79 | 'MONEY' => array (
|
---|
80 | 'str' => '%f',
|
---|
81 | 'arr' => '%0.2f',
|
---|
82 | 'div' => 100,
|
---|
83 | 'padl' => '0'
|
---|
84 | ),
|
---|
85 | 'SSA' => array (
|
---|
86 | 'padr' => ' ',
|
---|
87 | 'funcstr' => 'removeAcentos'
|
---|
88 | )//string sem acento
|
---|
89 | );
|
---|
90 |
|
---|
91 | function setType($name, $val) {
|
---|
92 | $this->types[$name] = $val;
|
---|
93 | }
|
---|
94 |
|
---|
95 | function getType($name) {
|
---|
96 | if (!isset ($this->types[$name]))
|
---|
97 | return $this->types['S'];
|
---|
98 | return $this->types[$name];
|
---|
99 | }
|
---|
100 |
|
---|
101 | function removeAcentos($Msg) {
|
---|
102 | $a = array (
|
---|
103 | "/[ÂÀÁÄÃ]/" => "A",
|
---|
104 | "/[âãàáä]/" => "a",
|
---|
105 | "/[ÊÈÉË]/" => "E",
|
---|
106 | "/[êèéë]/" => "e",
|
---|
107 | "/[ÎÍÌÏ]/" => "I",
|
---|
108 | "/[îíìï]/" => "i",
|
---|
109 | "/[ÔÕÒÓÖ]/" => "O",
|
---|
110 | "/[ôõòóö]/" => "o",
|
---|
111 | "/[ÛÙÚÜ]/" => "U",
|
---|
112 | "/[ûúùü]/" => "u",
|
---|
113 | "/ç/" => "c",
|
---|
114 | "/Ç/" => "C"
|
---|
115 | );
|
---|
116 | return preg_replace(array_keys($a), array_values($a), $Msg);
|
---|
117 | }
|
---|
118 | }
|
---|
119 | ?> |
---|