Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
2.13% covered (danger)
2.13%
1 / 47
0.00% covered (danger)
0.00%
0 / 3
CRAP
n/a
0 / 0
_get_receipt_place
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
30
register_receipt_activity
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 1
90
register_receipt_event
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2    include_once __DIR__."/registry.php";
3
4    /**
5     * Resolve place row for receipt log event.
6     *
7     * @param \ConxHelper $conx Connection helper.
8     * @param array|null $place Output place row.
9     * @param array $event Receipt event payload.
10     * @return int ApplicationError code.
11     */
12    function _get_receipt_place(\ConxHelper $conx, &$place, &$event){
13        $retval = ApplicationError::Success;
14
15        if (success($retval)){
16            $results = [];
17            $res = $conx->global->query('PLACE', [ 'objid' => $event['place'], 'status' => 'AC' ], $results);
18            if ($res){
19                if (count($results) > 0){
20                    $place = $results[0];
21                }
22
23                if (!$place){
24                    addlog(__FILE__, LogLevel::Error, "No active place found for print receipt: '".$event['place']."'");
25                    $retval = ApplicationError::NotFound;
26                }
27            }
28            else {
29                $retval = ApplicationError::Database;
30            }
31        }
32
33        return $retval;
34    }
35
36    /**
37     * Register receipt print activity.
38     *
39     * @param \ConxHelper $conx Connection helper.
40     * @param string $session Session id.
41     * @param array $place Place row.
42     * @param mixed $charge Ticket total.
43     * @param mixed $custom Printable payload JSON string.
44     * @param string|null $timestamp Optional event date.
45     * @return int ApplicationError code.
46     */
47    function register_receipt_activity(\ConxHelper $conx, $session, &$place, $charge, $custom, $timestamp = null){
48        $retval = ApplicationError::Success;
49
50        if (success($retval)){
51            $dstpath = AppConstants::RegLogPath();
52            if (!file_exists($dstpath) && !mkdir($dstpath, 0775)){
53                addlog(__FILE__, LogLevel::Error, "Could not create local registry log folder in '".$dstpath."'");
54                $error = error_get_last();
55                if ($error) addlog(__FILE__, LogLevel::Debug, $error['message']);
56            }
57
58            if (is_dir($dstpath)){
59                $dstfile = sprintf('%s/%05d_ticket_activity.csv', $dstpath, $place['objid']);
60                $lineinfo = [
61                    'session' => $session,
62                    'price' => $charge,
63                    'custom' => (string)$custom
64                ];
65
66                if ($timestamp == null){
67                    $conn = $conx->tenant;
68                    $timestamp = ($conn !== null) ? $conn->now() : $conx->global->now();
69                }
70
71                $chainResult = append_logline($dstfile, $timestamp, $place['objid'], LogEvent::TicketPrint, $lineinfo);
72                if (!success($chainResult)){
73                    addlog(__FILE__, LogLevel::Critical, "Fiscal activity link not written for place '".$place['objid']."' (ticket print) — write failure details are in an earlier log line.");
74                }
75            }
76        }
77
78        return $retval;
79    }
80
81    /**
82     * Register receipt event received from sync REGSTR target.
83     *
84     * @param \ConxHelper $conx Connection helper.
85     * @param string $session Session id.
86     * @param array $event Receipt event with place/charge/custom/created.
87     * @return int ApplicationError code.
88     */
89    function register_receipt_event(\ConxHelper $conx, $session, &$event){
90        $retval = ApplicationError::Success;
91
92        if (success($retval)){
93            $retval = _get_receipt_place($conx, $place, $event);
94        }
95
96        if (success($retval)){
97            $retval = register_receipt_activity(
98                $conx,
99                $session,
100                $place,
101                $event['charge'] ?? null,
102                $event['custom'] ?? '',
103                $event['created'] ?? null
104            );
105        }
106
107        return $retval;
108    }
109?>