File Coverage

blib/lib/Net/Correios/Prepostagens.pm
Criterion Covered Total %
statement 19 56 33.9
branch 1 12 8.3
condition 0 8 0.0
subroutine 5 11 45.4
pod 0 8 0.0
total 25 95 26.3


line stmt bran cond sub pod time code
1 1     1   10 use strict;
  1         2  
  1         29  
2 1     1   7 use warnings;
  1         1  
  1         45  
3 1     1   4 use Scalar::Util ();
  1         1  
  1         593  
4              
5             package Net::Correios::Prepostagens;
6              
7             sub new {
8 1     1 0 2 my ($class, $parent) = @_;
9 1         2 Scalar::Util::weaken($parent);
10 1         7 return bless { parent => $parent }, $class;
11             }
12              
13             sub criar {
14 1     1 0 1189 my ($self, $args) = @_;
15 1 50       3 die 'criar() espera uma sequencia de parametros' unless $args;
16              
17             #my $args = {@args}; # <-- FIXME olha Preco.pm, permitir varios!
18 1         1 my $parent = $self->{parent};
19              
20             # fazemos o pedido do token antes para garantirmos que temos
21             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
22 1         4 $parent->access_token('cartao');
23              
24 1         2 my $request_data = $args;
25              
26 1         34 my $res = $parent->make_request(
27             'cartao',
28             'POST',
29             'prepostagem/v1/prepostagens',
30             { content => JSON::encode_json($request_data) }
31             );
32 1         4 return $parent->parse_response($res);
33             }
34              
35             sub emitir_rotulo {
36 0     0 0   my ($self, $params) = @_;
37 0 0         die 'emitir_rotulo() espera uma sequencia de parametros' unless $params;
38 0 0         die 'emitir_rotulo() precisa de hashref com pelo menos o id' unless $params->{id};
39              
40             #my $args = {@args}; # <-- FIXME olha Preco.pm, permitir varios!
41 0           my $parent = $self->{parent};
42              
43             # fazemos o pedido do token antes para garantirmos que temos
44             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
45 0           $parent->access_token('cartao');
46              
47             my $request_data = {
48             tipoRotulo => $params->{tipo_rotulo} // 'P', # P(adrao) ou R(eduzido)
49             formatoRotulo => $params->{formato_rotulo} // 'ET', # ET(iqueta) ou EV(elope)
50             imprimeRemetente => $params->{imprime_remetente} // 'N', # S(im) ou N(ao)
51             idsPrePostagem => [$params->{id}],
52 0   0       layoutImpressao => $params->{layout_impressao} // 'PADRAO', # PADRAO, LINEAR_100_150, LINEAR_100_80, LINEAR_A4. Default PADRAO.
      0        
      0        
      0        
53             };
54              
55 0           my $res = $parent->make_request(
56             'cartao',
57             'POST',
58             'prepostagem/v1/prepostagens/rotulo/assincrono/pdf',
59             { content => JSON::encode_json($request_data) }
60             );
61 0           return $parent->parse_response($res);
62             }
63              
64             sub obter_rotulo_emitido {
65 0     0 0   my ($self, $id) = @_;
66 0 0         die 'obter_rotulo_emitido() espera um rotulo' unless $id;
67              
68             #my $args = {@args}; # <-- FIXME olha Preco.pm, permitir varios!
69 0           my $parent = $self->{parent};
70              
71             # fazemos o pedido do token antes para garantirmos que temos
72             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
73 0           $parent->access_token('cartao');
74              
75 0           my $res = $parent->make_request(
76             'cartao',
77             'GET',
78             'prepostagem/v1/prepostagens/rotulo/download/assincrono/' . $id,
79             );
80 0           return $parent->parse_response($res);
81             }
82              
83              
84             sub cancelar {
85 0     0 0   my ($self, $id) = @_;
86 0 0         die 'cancelar() espera um rotulo' unless $id;
87              
88             #my $args = {@args}; # <-- FIXME olha Preco.pm, permitir varios!
89 0           my $parent = $self->{parent};
90              
91             # fazemos o pedido do token antes para garantirmos que temos
92             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
93 0           $parent->access_token('cartao');
94              
95 0           my $res = $parent->make_request(
96             'cartao',
97             'DELETE',
98             'prepostagem/v1/prepostagens/' . $id,
99             {}
100             );
101 0           return $parent->parse_response($res);
102             }
103              
104             sub consulta {
105 0     0 0   my ($self, $rastreio) = @_;
106              
107 0           my $parent = $self->{parent};
108              
109             # fazemos o pedido do token antes para garantirmos que temos
110             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
111 0           $parent->access_token('cartao');
112              
113 0           my $res = $parent->make_request(
114             'cartao',
115             'GET',
116             'prepostagem/v1/prepostagens/postada?codigoObjeto=' . $rastreio
117             );
118 0           return $parent->parse_response($res);
119             }
120              
121             sub declaracao_conteudo {
122 0     0 0   my ($self, $id) = @_;
123 0           my $parent = $self->{parent};
124              
125             # fazemos o pedido do token antes para garantirmos que temos
126             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
127 0           $parent->access_token('cartao');
128              
129 0           my $request_data = {
130             idsPrePostagens => [$id],
131             tipoDace => 'C'
132             };
133 0           my $res = $parent->make_request(
134             'cartao',
135             'POST',
136             'prepostagem/v1/prepostagens/dce/dace/impressao',
137             { content => JSON::encode_json($request_data) }
138             );
139 0           return $parent->parse_response($res);
140             }
141              
142             sub aviso_recebimento {
143 0     0 0   my ($self, $id) = @_;
144 0 0         die 'aviso_recebimento() espera um id de prepostagem' unless $id;
145              
146 0           my $parent = $self->{parent};
147              
148             # fazemos o pedido do token antes para garantirmos que temos
149             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
150 0           $parent->access_token('cartao');
151              
152 0           my $res = $parent->make_request(
153             'cartao',
154             'GET',
155             'prepostagem/v1/prepostagens/avisorecebimento/' . $id
156             );
157 0           return $parent->parse_response($res);
158             }
159              
160             1;