Completed
Push — master ( 22dadb...55e860 )
by Roberto
06:45 queued 03:03
created

Base::removeInvalidAdresses()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 6
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 0
crap 2
1
<?php
2
3
namespace NFePHP\Mail;
4
5
class Base
6
{
7
    /**
8
     * Html Templates
9
     * @var array
10
     */
11
    protected $templates = [
12
        'NFe'=> "<p><b>Prezados {destinatario},</b></p>".
13
                "<p>Você está recebendo a Nota Fiscal Eletrônica emitida em {data} com o número ".
14
                "{numero}, de {emitente}, no valor de R$ {valor}. ".
15
                "Junto com a mercadoria, você receberá também um DANFE (Documento ".
16
                "Auxiliar da Nota Fiscal Eletrônica), que acompanha o trânsito das mercadorias.</p>".
17
                "<p><i>Podemos conceituar a Nota Fiscal Eletrônica como um documento ".
18
                "de existência apenas digital, emitido e armazenado eletronicamente, ".
19
                "com o intuito de documentar, para fins fiscais, uma operação de ".
20
                "circulação de mercadorias, ocorrida entre as partes. Sua validade ".
21
                "jurídica garantida pela assinatura digital do remetente (garantia ".
22
                "de autoria e de integridade) e recepção, pelo Fisco, do documento ".
23
                "eletrônico, antes da ocorrência do Fato Gerador.</i></p>".
24
                "<p><i>Os registros fiscais e contábeis devem ser feitos, a partir ".
25
                "do próprio arquivo da NF-e, anexo neste e-mail, ou utilizando o ".
26
                "DANFE, que representa graficamente a Nota Fiscal Eletrônica. ".
27
                "A validade e autenticidade deste documento eletrônico pode ser ".
28
                "verificada no site nacional do projeto (www.nfe.fazenda.gov.br), ".
29
                "através da chave de acesso contida no DANFE.</i></p>".
30
                "<p><i>Para poder utilizar os dados descritos do DANFE na ".
31
                "escrituração da NF-e, tanto o contribuinte destinatário, ".
32
                "como o contribuinte emitente, terão de verificar a validade da NF-e. ".
33
                "Esta validade está vinculada à efetiva existência da NF-e nos ".
34
                "arquivos da SEFAZ, e comprovada através da emissão da Autorização de Uso.</i></p>".
35
                "<p><b>O DANFE não é uma nota fiscal, nem substitui uma nota fiscal, ".
36
                "servindo apenas como instrumento auxiliar para consulta da NF-e no ".
37
                "Ambiente Nacional.</b></p>".
38
                "<p>Para mais detalhes, consulte: <a href=\"http://www.nfe.fazenda.gov.br/\">".
39
                "www.nfe.fazenda.gov.br</a></p>".
40
                "<br>".
41
                "<p>Atenciosamente,</p>".
42
                "<p>{emitente}</p>",
43
        
44
        'CTe'=> "<p><b>Prezados {destinatario},</b></p>".
45
                "<p>Você está recebendo um Conhecimento de Transporte Eletrônico emitido em {data} com o número ".
46
                "{numero}, de {emitente}, no valor de R$ {valor}. ".
47
                "Junto com a mercadoria, você receberá também um DACTE (Documento ".
48
                "Auxiliar do Conhecimento de Transporte Eletrônico), que acompanha o trânsito das mercadorias.</p>".
49
                "<p><i>Podemos conceituar o CTe como um documento ".
50
                "de existência apenas digital, emitido e armazenado eletronicamente, ".
51
                "com o intuito de documentar, para fins fiscais, uma operação de ".
52
                "circulação de mercadorias, ocorrida entre as partes. Sua validade ".
53
                "jurídica garantida pela assinatura digital do remetente (garantia ".
54
                "de autoria e de integridade) e recepção, pelo Fisco, do documento ".
55
                "eletrônico, antes da ocorrência do Fato Gerador.</i></p>".
56
                "<p><i>Os registros fiscais e contábeis devem ser feitos, a partir ".
57
                "do próprio arquivo da NF-e, anexo neste e-mail, ou utilizando o ".
58
                "DACTE, que representa graficamente o Conhecimento de Transporte Eletrônico. ".
59
                "A validade e autenticidade deste documento eletrônico pode ser ".
60
                "verificada no site nacional do projeto (www.cte.fazenda.gov.br), ".
61
                "através da chave de acesso contida no DACTE.</i></p>".
62
                "<p><i>Para poder utilizar os dados descritos do DACTE na ".
63
                "escrituração do CT-e, tanto o contribuinte destinatário, ".
64
                "como o contribuinte emitente, terão de verificar a validade do CT-e. ".
65
                "Esta validade está vinculada à efetiva existência do CT-e nos ".
66
                "arquivos da SEFAZ, e comprovada através da emissão da Autorização de Uso.</i></p>".
67
                "<p><b>O DACTE não é um Conhecimento de transporte, nem o substitui, ".
68
                "servindo apenas como instrumento auxiliar para consulta do CT-e no ".
69
                "Ambiente Nacional.</b></p>".
70
                "<p>Para mais detalhes, consulte: <a href=\"http://www.cte.fazenda.gov.br/\">".
71
                "www.cte.fazenda.gov.br</a></p>".
72
                "<br>".
73
                "<p>Atenciosamente,</p>".
74
                "<p>{emitente}</p>",
75
                
76
        'CCe'=> "<p><b>Prezados,</b></p>".
77
                "<p>Você está recebendo uma Carta de Correção referente ao nosso documento " .
78
                "{chave}.</p><p>Essa carta de correção datada de {data} procura corrigir:</p> ".
79
                "<p><b>{correcao}</b></p>".
80
                "<p><i>{conduso}</i></p>" .
81
                "<p>Atenciosamente,</p>".
82
                "<p>{emitente}</p>"
83
    ];
84
    
85
    /**
86
     * template user-defined
87
     * @var string
88
     */
89
    protected $template;
90
    /**
91
     * Type from xml document NFe, CTe or CCe
92
     * @var string
93
     */
94
    protected $type;
95
    /**
96
     * Addresses to send mail
97
     * This array should be repeated fields removed
98
     * @var array
99
     */
100
    protected $addresses;
101
    /**
102
     * Fields from xml
103
     * @var stdClass
104
     */
105
    protected $fields;
106
    /**
107
     * PHPMailer class
108
     * @var \PHPMailer
109
     */
110
    protected $mail;
111
    
112
    /**
113
     * Remove all invalid addresses
114
     */
115
    protected function removeInvalidAdresses()
116
    {
117
        //This resulted array should be repeated fields removed
118
        //and all not valid strings, and also trim and strtolower strings
119
        $this->addresses = array_unique($this->addresses);
120
        $this->addresses = array_map(array($this, 'clearAddressString'), $this->addresses);
121
        $this->addresses = array_filter($this->addresses, array($this, 'checkEmailAddress'));
122
    }
123
    
124
    /**
125
     * Build Message
126
     * @return string
127
     */
128
    protected function render()
129
    {
130
        //depending on the document a different template should be loaded
131
        //and having data patterns appropriately substituted
132
        $template = $this->templates[$this->type];
133
        if (! empty($this->template)) {
134
            $template = $this->template;
135
        }
136
        return $this->renderTemplate(
0 ignored issues
show
Bug introduced by
The method renderTemplate() does not exist on NFePHP\Mail\Base. Did you maybe mean render()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
137
            $template,
138
            $this->fields->destinatario,
139
            $this->fields->data,
140
            $this->fields->numero,
141
            $this->fields->valor,
142
            $this->fields->chave,
143
            $this->fields->correcao,
144
            $this->fields->conduso
145
        );
146
    }
147
    
148
    /**
149
     * Attach all documents to message
150
     */
151
    protected function attach()
152
    {
153
        $this->mail->addStringAttachment(
154
            $this->xml,
0 ignored issues
show
Bug introduced by
The property xml does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
155
            $this->type . '.xml'
156
        );
157
        if (! empty($this->pdf)) {
0 ignored issues
show
Bug introduced by
The property pdf does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
158
            $this->mail->addStringAttachment(
159
                $this->xml,
160
                $this->type . '.pdf'
161
            );
162
        }
163
    }
164
    
165
    /**
166
     * Returns only valid email string
167
     * @param string $email
168
     * @return boolean
169
     */
170
    protected function checkEmailAddress($email)
171
    {
172
        return filter_var($email, FILTER_VALIDATE_EMAIL);
173
    }
174
    
175
    /**
176
     * Format email address string removing garbage and
177
     * set to lower characters
178
     * @param string $email
179
     * @return string
180
     */
181
    protected function clearAddressString($email)
182
    {
183
        return preg_replace('/[ ,;:]+/', '', strtolower($email));
184
    }
185
}
186