ReleaseByInvoice::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 1
b 0
f 0
nc 1
nop 7
dl 0
loc 16
rs 10
1
<?php
2
/**
3
 * Copyright © Getnet. All rights reserved.
4
 *
5
 * @author    Bruno Elisei <[email protected]>
6
 * See LICENSE for license details.
7
 */
8
9
namespace Getnet\SplitExampleMagento\Cron;
10
11
use Getnet\PaymentMagento\Model\Console\Command\Marketplace\PaymentRelease as ModelPaymentRelease;
0 ignored issues
show
Bug introduced by
The type Getnet\PaymentMagento\Mo...ketplace\PaymentRelease was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use Getnet\SplitExampleMagento\Helper\Data;
13
use Magento\Framework\Api\SearchCriteriaBuilder;
14
use Magento\Sales\Model\Order\InvoiceRepositoryFactory;
0 ignored issues
show
Bug introduced by
The type Magento\Sales\Model\Order\InvoiceRepositoryFactory was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
use Psr\Log\LoggerInterface;
16
17
/**
18
 * Class Release By Invoice on Getnet.
19
 */
20
class ReleaseByInvoice
21
{
22
    /**
23
     * @var LoggerInterface
24
     */
25
    protected $logger;
26
27
    /**
28
     * @var Data
29
     */
30
    protected $helper;
31
32
    /**
33
     * @var InvoiceRepositoryFactory
34
     */
35
    protected $invoiceRepository;
36
37
    /**
38
     * @var SearchCriteriaBuilder
39
     */
40
    protected $searchCriteriaBuilder;
41
42
    /**
43
     * @var ModelPaymentRelease
44
     */
45
    protected $modelPaymentRelease;
46
47
    /**
48
     * @var \Magento\Framework\Stdlib\DateTime\DateTime
49
     */
50
    protected $date;
51
52
    /**
53
     * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
54
     */
55
    protected $timezone;
56
57
    /**
58
     * Constructor.
59
     *
60
     * @param LoggerInterface                                      $logger
61
     * @param Data                                                 $helper
62
     * @param ModelPaymentRelease                                  $modelPaymentRelease
63
     * @param InvoiceRepositoryFactory                             $invoiceRepository
64
     * @param SearchCriteriaBuilder                                $searchCriteriaBuilder
65
     * @param \Magento\Framework\Stdlib\DateTime\DateTime          $date
66
     * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone
67
     */
68
    public function __construct(
69
        LoggerInterface $logger,
70
        Data $helper,
71
        ModelPaymentRelease $modelPaymentRelease,
72
        InvoiceRepositoryFactory $invoiceRepository,
73
        SearchCriteriaBuilder $searchCriteriaBuilder,
74
        \Magento\Framework\Stdlib\DateTime\DateTime $date,
75
        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone
76
    ) {
77
        $this->logger = $logger;
78
        $this->helper = $helper;
79
        $this->modelPaymentRelease = $modelPaymentRelease;
80
        $this->invoiceRepository = $invoiceRepository;
81
        $this->searchCriteriaBuilder = $searchCriteriaBuilder;
82
        $this->date = $date;
83
        $this->timezone = $timezone;
84
    }
85
86
    /**
87
     * Execute the cron.
88
     *
89
     * @return void
90
     */
91
    public function execute()
92
    {
93
        $this->logger->debug('Cronjob Release By Invoice');
94
95
        $dateNow = new \DateTime();
96
        $dateTo = $dateNow->format('Y-m-d 23:59:59');
97
        $dateFrom = $dateNow->format('Y-m-d 00:00:00');
98
99
        $searchCriteria = $this->searchCriteriaBuilder
100
            ->addFilter('created_at', $dateFrom, 'gteq')
101
            ->addFilter('created_at', $dateTo, 'lteq')
102
            ->create();
103
104
        $invoices = $this->invoiceRepository->create()->getList($searchCriteria);
105
106
        $days = $this->helper->getDaysOfRelease();
107
        $days = $days ? $days : 1;
108
109
        $dateNow->add(new \DateInterval('P'.$days.'D'));
110
        $dateToRelease = $dateNow->format('Y-m-d\TH:i:s\Z');
111
112
        foreach ($invoices->getItems() as $invoice) {
113
            $order = $invoice->getOrder();
114
            $payment = $order->getPayment()->getMethodInstance();
115
            if ($payment->getCode() === 'getnet_paymentmagento_boleto'
116
                || $payment->getCode() === 'getnet_paymentmagento_cc'
117
            ) {
118
                $orderId = $order->getId();
119
                $this->logger->debug(sprintf('Invoice id %s, order id %s', $invoice->getId(), $orderId));
120
                $this->modelPaymentRelease->createPaymentRelease($orderId, $dateToRelease);
121
            }
122
        }
123
124
        $this->logger->debug('Cronjob Release By Invoice is done.');
125
    }
126
}
127