• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

chico-rei / correios-php / 27582377165

15 Jun 2026 11:08PM UTC coverage: 4.589% (-0.04%) from 4.627%
27582377165

push

github

mathmarques
set min version to php 8.2

57 of 1242 relevant lines covered (4.59%)

0.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Model/PrePostagem.php
1
<?php
2

3
namespace ChicoRei\Packages\Correios\Model;
4

5
use Carbon\Carbon;
6
use ChicoRei\Packages\Correios\CorreiosObject;
7
use ChicoRei\Packages\Correios\Util;
8
use InvalidArgumentException;
9

10
abstract class PrePostagem extends CorreiosObject
11
{
12
    /**
13
     * Identificador do usuário no IDCorreios. Obrigatório apenas para credenciais INTERNAS.
14
     */
15
    public ?string $idCorreios = null;
16

17
    /**
18
     * Dados do remetente.
19
     */
20
    public ?Remetente $remetente = null;
21

22
    /**
23
     * Dados do destinatário.
24
     */
25
    public ?Destinatario $destinatario = null;
26

27
    /**
28
     * Código identificador do objeto. Tamanho máximo: 13 caracteres.
29
     */
30
    public ?string $codigoObjeto = null;
31

32
    /**
33
     * Código do serviço a ser pré-postado. Não pode ser deixado em branco.
34
     * Tem que ser um código de serviço válido.
35
     * O código do serviço deve constar no cartão de postagem do cliente que está fazendo a pré-postagem
36
     */
37
    public ?string $codigoServico = null;
38

39
    /**
40
     * Serviços Adicionais.
41
     *
42
     * @var ServicoAdicional[]|null
43
     */
44
    public ?array $listaServicoAdicional = null;
45

46
    /**
47
     * Modalidade Pagamento: 1-à vista, 2-à faturar, 3- à avista e à afaturar
48
     * e 4- Prestação de contas recebimento ou pagamento.
49
     */
50
    public ?int $modalidadePagamento = null;
51

52
    /**
53
     * Preço somente do serviço, sem os adicionais. Utilizado apenas em credenciais INTERNAS.
54
     */
55
    public ?float $precoServico = null;
56

57
    /**
58
     * Preço total da pré-postagem. Utilizado apenas em credenciais INTERNAS.
59
     */
60
    public ?float $precoPrePostagem = null;
61

62
    /**
63
     * Número da nota fiscal que acompanhará o objeto pré-postado.
64
     * Obrigatório, na ausência da declaração de conteúdo ou NFe. Tamanho máximo: 12 caracteres numéricos.
65
     */
66
    public ?string $numeroNotaFiscal = null;
67

68
    /**
69
     * Chave da Nota Fiscal Eletrônica. Obrigatório, na ausência da declaração de conteúdo ou NF.
70
     * Se informado, deverá conter 44 caracteres numéricos.
71
     */
72
    public ?string $chaveNFe = null;
73

74
    /**
75
     * Itens da declaração de conteúdo. Obrigatório, na ausência da NF ou NFe.
76
     *
77
     * @var ItemDeclaracaoConteudo[]|null
78
     */
79
    public ?array $itensDeclaracaoConteudo = null;
80

81
    /**
82
     * Peso em gramas do objeto que será pré-postado. Não pode ser deixado em branco.
83
     * Não pode ser zero. Não pode ser um valor negativo.
84
     * Não pode exceder o limite máximo definido para o serviço informado. Tamanho máximo: 6 dígitos.
85
     */
86
    public ?string $pesoInformado = null;
87

88
    /**
89
     * Código do formato do objeto a ser pré-postado. Não pode ser deixado em branco.
90
     * Deve ser um dos códigos a seguir: 1-Envelope; 2-Caixa/Pacote; 3-Cilindro/rolo.
91
     */
92
    public ?string $codigoFormatoObjetoInformado = null;
93

94
    /**
95
     * Dimensão altura do objeto a ser pré-postado. Obrigatório para o formato caixa/pacote.
96
     * Deve ser informada em centímetros. Não deve ser menor que o limite mínimo nem maior do que o
97
     * limite máximo definido para o serviço informado. Tamanho máximo: 3 dígitos.
98
     */
99
    public ?string $alturaInformada = null;
100

101
    /**
102
     * Dimensão largura do objeto a ser pré-postado. Obrigatório para o formato caixa/pacote.
103
     * Deve ser informada em centímetros. Não deve ser menor que o limite mínimo nem maior do que
104
     * o limite máximo definido para o serviço informado. Tamanho máximo: 3 dígitos.
105
     */
106
    public ?string $larguraInformada = null;
107

108
    /**
109
     * Dimensão comprimento do objeto a ser pré-postado. Obrigatório para o formato caixa/pacote.
110
     * Deve ser informado em centímetros. Não deve ser menor que o limite mínimo nem maior do que o
111
     * limite máximo definido para o serviço informado. Tamanho máximo: 3 dígitos.
112
     */
113
    public ?string $comprimentoInformado = null;
114

115
    /**
116
     * Dimensão diâmetro do objeto a ser pré-postado. Obrigatório para o formato cilindro /rolo.
117
     * Deve ser informado em centímetros. Não deve ser menor que o limite mínimo nem maior do que o
118
     * limite máximo definido para o serviço informado. Tamanho máximo: 3 dígitos.
119
     */
120
    public ?string $diametroInformado = null;
121

122
    /**
123
     * Código NCM (Nomenclatura Comum do Mercosul) do produto que está sendo pré-postado.
124
     * Se informado deve conter até 8 caracteres numéricos.
125
     */
126
    public ?string $ncmObjeto = null;
127

128
    /**
129
     * Código SSCC (do inglês Serial Shipping Container Code ou traduzindo Código de Séria de
130
     * Unidade Logística) associado à TAG RFID afixado no objeto que está sendo pré-postado.
131
     * Se informado deverá ter até 20 caracteres numéricos.
132
     */
133
    public ?string $rfidObjeto = null;
134

135
    /**
136
     * Atributo que indica que o objeto a ser pré-postado é permitido no fluxo postal.
137
     * Não pode ser deixada em branco. Deverá ser informado "0" ou "1".
138
     * Onde  "0" – Indica que o cliente está pré-postando um objeto proibido no fluxo postal e
139
     * "1" – Indica que o cliente está pré-postando um objeto permitido no fluxo postal
140
     */
141
    public ?int $cienteObjetoNaoProibido = null;
142

143
    /**
144
     * ID do atendimento. Utilizado apenas em credenciais INTERNAS
145
     */
146
    public ?string $idAtendimento = null;
147

148
    /**
149
     * Indica se o objeto vai ter uma coleta gerada, valores possíveis: S ou N.
150
     */
151
    public ?string $solicitarColeta = null;
152

153
    /**
154
     * Data provável da postagem (obrigatório apenas para o segmento de mensagem).
155
     */
156
    public ?Carbon $dataPrevistaPostagem = null;
157

158
    /**
159
     * Informações complementares. Tamanho máximo: 50 caracteres.
160
     */
161
    public ?string $observacao = null;
162

163
    /**
164
     * Indicador se possui ou não logística reversa: S= Sim, N= Não.
165
     */
166
    public ?string $logisticaReversa = null;
167

168
    /**
169
     * Data de validade da logistica reversa.
170
     */
171
    public ?Carbon $dataValidadeLogReversa = null;
172

173
    /**
174
     * Data de limite para postagem do objeto. Após essa data, caso o objeto não seja postado,
175
     * o mesmo será expirado. Data default será a data de criação + 14 dias, caso não seja informada.
176
     * Data máxima de 90 dias a contar da data de criação.
177
     */
178
    public ?Carbon $prazoPostagem = null;
179

180
    /**
181
     * Identifica o código de pedido do cliente junto à plataforma externa.
182
     */
183
    public ?string $pedidoExternoOrigem = null;
184

185
    /**
186
     * Identifica o canal de acesso utilizado pelo cliente externo ao acessar serviço.
187
     */
188
    public ?string $canalExternoOrigem = null;
189

190
    /**
191
     * Identificador do usuário no IDCorreios. Obrigatório apenas para credenciais INTERNAS.
192
     */
193
    public ?string $numeroCartaoPostagem = null;
194

195
    public function getIdCorreios(): ?string
196
    {
197
        return $this->idCorreios;
×
198
    }
199

200
    public function setIdCorreios(?string $idCorreios): PrePostagem
201
    {
202
        $this->idCorreios = $idCorreios;
×
203
        return $this;
×
204
    }
205

206
    public function getRemetente(): ?Remetente
207
    {
208
        return $this->remetente;
×
209
    }
210

211
    /**
212
     * @param Remetente|array|null $remetente
213
     * @return $this
214
     */
215
    public function setRemetente($remetente): PrePostagem
216
    {
217
        $this->remetente = is_null($remetente) ? null : Remetente::create($remetente);
×
218
        return $this;
×
219
    }
220

221
    public function getDestinatario(): ?Destinatario
222
    {
223
        return $this->destinatario;
×
224
    }
225

226
    /**
227
     * @param Destinatario|array|null $destinatario
228
     * @return $this
229
     */
230
    public function setDestinatario($destinatario): PrePostagem
231
    {
232
        $this->destinatario = is_null($destinatario) ? null : Destinatario::create($destinatario);
×
233
        return $this;
×
234
    }
235

236
    public function getCodigoObjeto(): ?string
237
    {
238
        return $this->codigoObjeto;
×
239
    }
240

241
    public function setCodigoObjeto(?string $codigoObjeto): PrePostagem
242
    {
243
        $this->codigoObjeto = $codigoObjeto;
×
244
        return $this;
×
245
    }
246

247
    public function getCodigoServico(): ?string
248
    {
249
        return $this->codigoServico;
×
250
    }
251

252
    public function setCodigoServico(?string $codigoServico): PrePostagem
253
    {
254
        $this->codigoServico = $codigoServico;
×
255
        return $this;
×
256
    }
257

258
    public function getListaServicoAdicional(): ?array
259
    {
260
        return $this->listaServicoAdicional;
×
261
    }
262

263
    /**
264
     * @param ServicoAdicional[]|array|null $listaServicoAdicional
265
     * @return $this
266
     */
267
    public function setListaServicoAdicional(?array $listaServicoAdicional): PrePostagem
268
    {
269
        if (is_array($listaServicoAdicional)) {
×
270
            $this->listaServicoAdicional = [];
×
271

272
            foreach ($listaServicoAdicional as $servicoAdicional) {
×
273
                $this->addServicoAdicional($servicoAdicional);
×
274
            }
275
        } else {
276
            $this->listaServicoAdicional = null;
×
277
        }
278

279
        return $this;
×
280
    }
281

282
    /**
283
     * @param ServicoAdicional|array $servicoAdicional
284
     */
285
    public function addServicoAdicional($servicoAdicional): PrePostagem
286
    {
287
        if (! is_array($servicoAdicional) && ! $servicoAdicional instanceof ServicoAdicional) {
×
288
            throw new InvalidArgumentException('The argument must be an instance of ServicoAdicional or an array');
×
289
        }
290

291
        if (!isset($this->listaServicoAdicional)) {
×
292
            $this->listaServicoAdicional = [];
×
293
        }
294

295
        $this->listaServicoAdicional[] = ServicoAdicional::create($servicoAdicional);
×
296

297
        return $this;
×
298
    }
299

300
    public function getModalidadePagamento(): ?int
301
    {
302
        return $this->modalidadePagamento;
×
303
    }
304

305
    public function setModalidadePagamento(?int $modalidadePagamento): PrePostagem
306
    {
307
        $this->modalidadePagamento = $modalidadePagamento;
×
308
        return $this;
×
309
    }
310

311
    public function getPrecoServico(): ?float
312
    {
313
        return $this->precoServico;
×
314
    }
315

316
    public function setPrecoServico(?float $precoServico): PrePostagem
317
    {
318
        $this->precoServico = $precoServico;
×
319
        return $this;
×
320
    }
321

322
    public function getPrecoPrePostagem(): ?float
323
    {
324
        return $this->precoPrePostagem;
×
325
    }
326

327
    public function setPrecoPrePostagem(?float $precoPrePostagem): PrePostagem
328
    {
329
        $this->precoPrePostagem = $precoPrePostagem;
×
330
        return $this;
×
331
    }
332

333
    public function getNumeroNotaFiscal(): ?string
334
    {
335
        return $this->numeroNotaFiscal;
×
336
    }
337

338
    public function setNumeroNotaFiscal(?string $numeroNotaFiscal): PrePostagem
339
    {
340
        $this->numeroNotaFiscal = $numeroNotaFiscal;
×
341
        return $this;
×
342
    }
343

344
    public function getChaveNFe(): ?string
345
    {
346
        return $this->chaveNFe;
×
347
    }
348

349
    public function setChaveNFe(?string $chaveNFe): PrePostagem
350
    {
351
        $this->chaveNFe = $chaveNFe;
×
352
        return $this;
×
353
    }
354

355
    public function getItensDeclaracaoConteudo(): ?array
356
    {
357
        return $this->itensDeclaracaoConteudo;
×
358
    }
359

360
    public function setItensDeclaracaoConteudo(?array $itensDeclaracaoConteudo): PrePostagem
361
    {
362
        if (is_array($itensDeclaracaoConteudo)) {
×
363
            $this->itensDeclaracaoConteudo = [];
×
364

365
            foreach ($itensDeclaracaoConteudo as $itemDeclaracaoConteudo) {
×
366
                $this->addItemDeclaracaoConteudo($itemDeclaracaoConteudo);
×
367
            }
368
        } else {
369
            $this->itensDeclaracaoConteudo = null;
×
370
        }
371

372
        return $this;
×
373
    }
374

375
    /**
376
     * @param ItemDeclaracaoConteudo|array $itemDeclaracaoConteudo
377
     */
378
    public function addItemDeclaracaoConteudo($itemDeclaracaoConteudo): PrePostagem
379
    {
380
        if (! is_array($itemDeclaracaoConteudo) && ! $itemDeclaracaoConteudo instanceof ItemDeclaracaoConteudo) {
×
381
            throw new InvalidArgumentException(
×
382
                'The argument must be an instance of ItemDeclaracaoConteudo or an array'
×
383
            );
×
384
        }
385

386
        if (!isset($this->itensDeclaracaoConteudo)) {
×
387
            $this->itensDeclaracaoConteudo = [];
×
388
        }
389

390
        $this->itensDeclaracaoConteudo[] = ItemDeclaracaoConteudo::create($itemDeclaracaoConteudo);
×
391

392
        return $this;
×
393
    }
394

395
    public function getPesoInformado(): ?string
396
    {
397
        return $this->pesoInformado;
×
398
    }
399

400
    public function setPesoInformado(?string $pesoInformado): PrePostagem
401
    {
402
        $this->pesoInformado = $pesoInformado;
×
403
        return $this;
×
404
    }
405

406
    public function getCodigoFormatoObjetoInformado(): ?string
407
    {
408
        return $this->codigoFormatoObjetoInformado;
×
409
    }
410

411
    public function setCodigoFormatoObjetoInformado(?string $codigoFormatoObjetoInformado): PrePostagem
412
    {
413
        $this->codigoFormatoObjetoInformado = $codigoFormatoObjetoInformado;
×
414
        return $this;
×
415
    }
416

417
    public function getAlturaInformada(): ?string
418
    {
419
        return $this->alturaInformada;
×
420
    }
421

422
    public function setAlturaInformada(?string $alturaInformada): PrePostagem
423
    {
424
        $this->alturaInformada = $alturaInformada;
×
425
        return $this;
×
426
    }
427

428
    public function getLarguraInformada(): ?string
429
    {
430
        return $this->larguraInformada;
×
431
    }
432

433
    public function setLarguraInformada(?string $larguraInformada): PrePostagem
434
    {
435
        $this->larguraInformada = $larguraInformada;
×
436
        return $this;
×
437
    }
438

439
    public function getComprimentoInformado(): ?string
440
    {
441
        return $this->comprimentoInformado;
×
442
    }
443

444
    public function setComprimentoInformado(?string $comprimentoInformado): PrePostagem
445
    {
446
        $this->comprimentoInformado = $comprimentoInformado;
×
447
        return $this;
×
448
    }
449

450
    public function getDiametroInformado(): ?string
451
    {
452
        return $this->diametroInformado;
×
453
    }
454

455
    public function setDiametroInformado(?string $diametroInformado): PrePostagem
456
    {
457
        $this->diametroInformado = $diametroInformado;
×
458
        return $this;
×
459
    }
460

461
    public function getNcmObjeto(): ?string
462
    {
463
        return $this->ncmObjeto;
×
464
    }
465

466
    public function setNcmObjeto(?string $ncmObjeto): PrePostagem
467
    {
468
        $this->ncmObjeto = $ncmObjeto;
×
469
        return $this;
×
470
    }
471

472
    public function getRfidObjeto(): ?string
473
    {
474
        return $this->rfidObjeto;
×
475
    }
476

477
    public function setRfidObjeto(?string $rfidObjeto): PrePostagem
478
    {
479
        $this->rfidObjeto = $rfidObjeto;
×
480
        return $this;
×
481
    }
482

483
    public function getCienteObjetoNaoProibido(): ?int
484
    {
485
        return $this->cienteObjetoNaoProibido;
×
486
    }
487

488
    public function setCienteObjetoNaoProibido(?int $cienteObjetoNaoProibido): PrePostagem
489
    {
490
        $this->cienteObjetoNaoProibido = $cienteObjetoNaoProibido;
×
491
        return $this;
×
492
    }
493

494
    public function getIdAtendimento(): ?string
495
    {
496
        return $this->idAtendimento;
×
497
    }
498

499
    public function setIdAtendimento(?string $idAtendimento): PrePostagem
500
    {
501
        $this->idAtendimento = $idAtendimento;
×
502
        return $this;
×
503
    }
504

505
    public function getSolicitarColeta(): ?string
506
    {
507
        return $this->solicitarColeta;
×
508
    }
509

510
    public function setSolicitarColeta(?string $solicitarColeta): PrePostagem
511
    {
512
        $this->solicitarColeta = $solicitarColeta;
×
513
        return $this;
×
514
    }
515

516
    public function getDataPrevistaPostagem(): ?Carbon
517
    {
518
        return $this->dataPrevistaPostagem;
×
519
    }
520

521
    /**
522
     * @param Carbon|string|null $dataPrevistaPostagem
523
     * @return $this
524
     */
525
    public function setDataPrevistaPostagem($dataPrevistaPostagem): PrePostagem
526
    {
527
        $this->dataPrevistaPostagem = Util::parseDate($dataPrevistaPostagem);
×
528
        return $this;
×
529
    }
530

531
    public function getObservacao(): ?string
532
    {
533
        return $this->observacao;
×
534
    }
535

536
    public function setObservacao(?string $observacao): PrePostagem
537
    {
538
        $this->observacao = $observacao;
×
539
        return $this;
×
540
    }
541

542
    public function getLogisticaReversa(): ?string
543
    {
544
        return $this->logisticaReversa;
×
545
    }
546

547
    public function setLogisticaReversa(?string $logisticaReversa): PrePostagem
548
    {
549
        $this->logisticaReversa = $logisticaReversa;
×
550
        return $this;
×
551
    }
552

553
    public function getDataValidadeLogReversa(): ?Carbon
554
    {
555
        return $this->dataValidadeLogReversa;
×
556
    }
557

558
    /**
559
     * @param Carbon|String|null $dataValidadeLogReversa
560
     * @return $this
561
     */
562
    public function setDataValidadeLogReversa($dataValidadeLogReversa): PrePostagem
563
    {
564
        $this->dataValidadeLogReversa = Util::parseDate($dataValidadeLogReversa);
×
565
        return $this;
×
566
    }
567

568
    public function getPrazoPostagem(): ?Carbon
569
    {
570
        return $this->prazoPostagem;
×
571
    }
572

573
    /**
574
     * @param Carbon|string|null $prazoPostagem
575
     * @return $this
576
     */
577
    public function setPrazoPostagem($prazoPostagem): PrePostagem
578
    {
579
        $this->prazoPostagem = Util::parseDate($prazoPostagem);
×
580
        return $this;
×
581
    }
582

583
    public function getPedidoExternoOrigem(): ?string
584
    {
585
        return $this->pedidoExternoOrigem;
×
586
    }
587

588
    public function setPedidoExternoOrigem(?string $pedidoExternoOrigem): PrePostagem
589
    {
590
        $this->pedidoExternoOrigem = $pedidoExternoOrigem;
×
591
        return $this;
×
592
    }
593

594
    public function getCanalExternoOrigem(): ?string
595
    {
596
        return $this->canalExternoOrigem;
×
597
    }
598

599
    public function setCanalExternoOrigem(?string $canalExternoOrigem): PrePostagem
600
    {
601
        $this->canalExternoOrigem = $canalExternoOrigem;
×
602
        return $this;
×
603
    }
604

605
    public function getNumeroCartaoPostagem(): ?string
606
    {
607
        return $this->numeroCartaoPostagem;
×
608
    }
609

610
    public function setNumeroCartaoPostagem(?string $numeroCartaoPostagem): PrePostagem
611
    {
612
        $this->numeroCartaoPostagem = $numeroCartaoPostagem;
×
613
        return $this;
×
614
    }
615

616
    public function toArray(): array
617
    {
618
        return [
×
619
            'idCorreios' => $this->getIdCorreios(),
×
620
            'remetente' => $this->getRemetente() ? $this->getRemetente()->toArray() : null,
×
621
            'destinatario' => $this->getDestinatario() ? $this->getDestinatario()->toArray() : null,
×
622
            'codigoServico' => $this->getCodigoServico(),
×
623
            'precoServico' => $this->getPrecoServico(),
×
624
            'precoPrePostagem' => $this->getPrecoPrePostagem(),
×
625
            'numeroNotaFiscal' => $this->getNumeroNotaFiscal(),
×
626
            'chaveNFe' => $this->getChaveNFe(),
×
627
            'listaServicoAdicional' => $this->getListaServicoAdicional()
×
628
                ? array_map(function (ServicoAdicional $servicoAdicional) {
×
629
                    return $servicoAdicional->toArray();
×
630
                }, $this->getListaServicoAdicional())
×
631
                : null,
×
632
            'itensDeclaracaoConteudo' => $this->getItensDeclaracaoConteudo()
×
633
                ? array_map(function (ItemDeclaracaoConteudo $itemDeclaracaoConteudo) {
×
634
                    return $itemDeclaracaoConteudo->toArray();
×
635
                }, $this->getItensDeclaracaoConteudo())
×
636
                : null,
×
637
            'pesoInformado' => $this->getPesoInformado(),
×
638
            'codigoFormatoObjetoInformado' => $this->getCodigoFormatoObjetoInformado(),
×
639
            'alturaInformada' => $this->getAlturaInformada(),
×
640
            'larguraInformada' => $this->getLarguraInformada(),
×
641
            'comprimentoInformado' => $this->getComprimentoInformado(),
×
642
            'diametroInformado' => $this->getDiametroInformado(),
×
643
            'ncmObjeto' => $this->getNcmObjeto(),
×
644
            'rfidObjeto' => $this->getRfidObjeto(),
×
645
            'cienteObjetoNaoProibido' => $this->getCienteObjetoNaoProibido(),
×
646
            'idAtendimento' => $this->getIdAtendimento(),
×
647
            'solicitarColeta' => $this->getSolicitarColeta(),
×
648
            'codigoObjeto' => $this->getCodigoObjeto(),
×
649
            'dataPrevistaPostagem' => $this->getDataPrevistaPostagem() ?
×
650
                $this->getDataPrevistaPostagem()->format('d/m/Y') : null,
×
651
            'observacao' => $this->getObservacao(),
×
652
            'modalidadePagamento' => $this->getModalidadePagamento(),
×
653
            'logisticaReversa' => $this->getLogisticaReversa(),
×
654
            'dataValidadeLogReversa' => $this->getDataValidadeLogReversa() ?
×
655
                $this->getDataValidadeLogReversa()->format('d/m/Y') : null,
×
656
            'prazoPostagem' => $this->getPrazoPostagem() ?
×
657
                $this->getPrazoPostagem()->format('d/m/Y') : null,
×
658
            'canalExternoOrigem' => $this->getCanalExternoOrigem(),
×
659
            'pedidoExternoOrigem' => $this->getPedidoExternoOrigem(),
×
660
            'numeroCartaoPostagem' => $this->getNumeroCartaoPostagem(),
×
661
        ];
×
662
    }
663
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc