Generacion Addenda de factura para Chedraui

Contenido/contents:
Introducion
Codigo Fuente
Uso de la funcion
Pagina anterior/Previous page

Introduccion
Grupo Chedraui decidio contratar los servicios de la empresa Levicom para su proyecto de Factura Electronica.
El formato que requiere en la Adenda es especial y a mi me lo envio el Sr. Carlos Alarcon Sub-Gerente de proyectos Administrativos de Grupo Chedraui, estoy seguro de que en algun lugar de la pagina de Levicom se debe de poder descargar pero no he encontrado la liga.
24/enero/2007 Eureka! ya no lo estoy enviando en el formato especial de EDCINVOICE que requiere LEVICOM, ya lo envio ene l formato standard de la AMECE directamente a Chedraui
Codigo Fuente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
<?php
//
// +-------------------------------------------------------------------------------+
// | satxched.php : Genera Factura electronica CHEDRAUI           XML                        |
// +-------------------------------------------------------------------------------+
// | Copyright (c) 2006  Fabrica de Jabon la Corona, SA de CV                      |
// +-------------------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or                 |
// | modify it under the terms of the GNU General Public License                   |
// | as published by the Free Software Foundation; either version 2                |
// | of the License, or (at your option) any later version.                        |
// |                                                                               |
// | This program is distributed in the hope that it will be useful,               |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 |
// | GNU General Public License for more details.                                  |
// |                                                                               |
// | You should have received a copy of the GNU General Public License             |
// | along with this program; if not, write to the Free Software                   |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.   |
// +-------------------------------------------------------------------------------+
// | Autor: Fernando Ortiz <fortiz@lacorona.com.mx>                                |
// +-------------------------------------------------------------------------------+
// | 24/Enero/2007   Version original en base a guia 1.3.1 de la AMECE             |
// |                                                                               |
// | 28/Mayo/2008    Se agregan los campos que pide ekonom, se enviara via paebsa  |
// |                 y ellos via ekonom. terminacion con levicom                   |
// +-------------------------------------------------------------------------------+
//
function satxched($nufa,$data) {
// {{{ carga librerias requeridas para obtener los datos
require_once("dbi/clfactur.class.php");      // Es el registro maestro de la factura
require_once("dbi/clflinea.class.php");      // Contiene un regisro por linea/partida de la factura
require_once("dbi/clproduc.class.php");      // Datos Generales del Producto
require_once("dbi/clclient.class.php");      // Datos Generales del Producto
require_once "lib/getfolio.php";             // Le suma uno al foliador y regresa el siguiente folio
require_once "lib/numealet.php";             // genera el texto de un importe con letras
global $conn;                                // Conexion adodb a la base de datos
// }}}
// {{{ Inicialice varibles / contadores globales
error_reporting(E_ALL);
$remi = "";
$fact = new Clfactur($conn,$nufa);
$clie = new Clclient($conn,(int)$fact->row["factnucl"],'renglon');
// }}}
// {{{ Encabezados generales 
// +--------------------------------------------------------------------+
// | Genera el nodo raiz de la remision                                 |
// +--------------------------------------------------------------------+
$serie = substr($nufa,0,4);
$folio = substr($nufa,4);
$auto = $data['noAprobacion']; // Numero de autorizacion del SAT de los folios
$iden = "JABON-CORONA";
 
// $fdoc = edi_fech($fact->row['factfdoc']);
$fdoc = substr(fix_fdoc($fact->row["factfdoc"]),0,10);
 
$g_folio = $conn->getOne("select fedifoli from cfdchedra where fedinufa = '$nufa'"); // Lee el folio anterior si existe
if (!$g_folio) $g_folio = getfolio("cte",6,"SATXINVO",14); // Toma folio consecutivo para cada mensaje EDI
 
global $xml, $root;
$xml = new DOMdocument("1.0","UTF-8");
$root = $xml->createElement("requestForPayment");
$root = $xml->appendChild($root);
 
$att = array("type"=>"SimpleInvoiceType",
             "contentVersion"=>"1.3.1",
             "documentStructureVersion"=>"AMC7.1",
             "documentStatus"=>"ORIGINAL",
             "DeliveryDate"=>$fdoc);
carga_att($root,$att);
 
// a.1
$requestForPaymentIdentification = $xml->createElement("requestForPaymentIdentification");
$ele = array( "entityType"=>"INVOICE",
              "uniqueCreatorIdentification"=>$nufa);
carga_eles($requestForPaymentIdentification,$ele);
 
// a.2
$specialInstruction = $xml->createElement("specialInstruction");
$specialInstruction->setAttribute("code","ZZZ");
$text = $xml->createElement("text", numealet($fact->row["factimto"]));
$tmp = $specialInstruction->appendChild($text);
$tmp = $root->appendChild($specialInstruction);
 
// a.3
$orderIdentification = $xml->createElement("orderIdentification");
$referenceIdentification = $xml->createElement("referenceIdentification", satxched_fix($fact->row["factnpec"]));
$referenceIdentification->setAttribute("type","ON");
$fpec = satxched_fixdate($fact->row['factfpec']);
$ReferenceDate = $xml->createElement("ReferenceDate", $fpec);
$tmp = $orderIdentification->appendChild($referenceIdentification);
$tmp = $orderIdentification->appendChild($ReferenceDate);
$tmp = $root->appendChild($orderIdentification);
 
// a.4
$AdditionalInformation = $xml->createElement("AdditionalInformation");
$referenceIdentification = $xml->createElement("referenceIdentification", $auto);
$referenceIdentification->setAttribute("type","ATZ");
$tmp = $AdditionalInformation->appendChild($referenceIdentification);
$tmp = $root->appendChild($AdditionalInformation);
 
// a.6
$buyer = $xml->createElement("buyer");
$gln = $xml->createElement("gln", '7507001800019');   // Numero GLN de la sucursal
$tmp = $buyer->appendChild($gln);
$tmp = $root->appendChild($buyer);
 
// a.7
$seller = $xml->createElement("seller");
$gln = $xml->createElement("gln", "7505000065005"); // GLN de la Corona
$alternatePartyIdentification = $xml->createElement("alternatePartyIdentification", "000517");
$alternatePartyIdentification->setAttribute("type","SELLER_ASSIGNED_IDENTIFIER_FOR_A_PARTY");
$tmp = $seller->appendChild($gln);
$tmp = $seller->appendChild($alternatePartyIdentification);
$tmp = $root->appendChild($seller);
 
// a.8
$sucu = (int)$clie->row["cliesucu"]; 
$sucu = str_pad($sucu, 13, "0", STR_PAD_LEFT);    // GLN del cliente en base a la sucursal
$shipto = $xml->createElement("shipTo");
$gln = $xml->createElement("gln", $sucu); 
$tmp = $shipto->appendChild($gln);
$nameandaddress = $xml->createElement("nameAndAddress");
$name = $xml->createElement("name", satxched_fix($clie->row["clienone"],35));
$tmp = $nameandaddress->appendChild($name);
$calle = substr(trim($fact->row["factcdir"])." ".trim($fact->row["factccol"]),0,34);
$streetaddressone = $xml->createElement("streetAddressOne", satxched_fix($calle,35));
$tmp = $nameandaddress->appendChild($streetaddressone);
$city = $xml->createElement("city", satxched_fix($fact->row["factnpue"],35));
$tmp = $nameandaddress->appendChild($city);
$postalcode = $xml->createElement("postalCode", satxched_fix($fact->row["factcodp"]));
$tmp = $nameandaddress->appendChild($postalcode);
$tmp = $shipto->appendChild($nameandaddress);
$tmp = $root->appendChild($shipto);
 
// a.9
$InvoiceCreator = $xml->createElement("InvoiceCreator");
$gln = $xml->createElement("gln", "7505000065005"); // GLN de la Corona
$tmp = $InvoiceCreator->appendChild($gln);
$alternatePartyIdentification = $xml->createElement("alternatePartyIdentification", "FJC780315E91");
$alternatePartyIdentification->setAttribute("type","VA");
$tmp = $InvoiceCreator->appendChild($alternatePartyIdentification);
$nameandaddress = $xml->createElement("nameAndAddress");
$name = $xml->createElement("name", satxched_fix("FABRICA DE JABON LA CORONA",35));
$tmp = $nameandaddress->appendChild($name);
$streetaddressone = $xml->createElement("streetAddressOne", satxched_fix("CARLOS B ZETINA 80, IND XALOSTOC",35));
$tmp = $nameandaddress->appendChild($streetaddressone);
$city = $xml->createElement("city", "ECATEPEC, EDO DE MEX");
$tmp = $nameandaddress->appendChild($city);
$postalcode = $xml->createElement("postalCode", "55348");
$tmp = $nameandaddress->appendChild($postalcode);
$tmp = $InvoiceCreator->appendChild($nameandaddress);
$tmp = $root->appendChild($InvoiceCreator);
 
// a.11
$currency = $xml->createElement("currency");
$currency->setAttribute("currencyISOCode","MXN");
$ele = array("currencyFunction"=>"BILLING_CURRENCY",
            "rateOfChange"=>"1"
        );
carga_eles($currency,$ele);
 
// a.12
$paymentTerms = $xml->createElement("paymentTerms");
$paymentTerms->setAttribute("paymentTermsEvent","DATE_OF_INVOICE");
$paymentTerms->setAttribute("PaymentTermsRelationTime","REFERENCE_AFTER");
$netPayment = $xml->createElement("netPayment"); 
$netPayment->setAttribute("netPaymentTermsType","BASIC_NET");
$paymentTimePeriod = $xml->createElement("paymentTimePeriod");
$timePeriodDue = $xml->createElement("timePeriodDue");
$timePeriodDue->setAttribute("timePeriod","DAYS");
$value = $xml->createElement("value", 30);
$tmp = $timePeriodDue->appendChild($value);
$tmp = $paymentTimePeriod->appendChild($timePeriodDue);
$tmp = $netPayment->appendChild($paymentTimePeriod);
$tmp = $paymentTerms->appendChild($netPayment);
$tmp = $root->appendChild($paymentTerms);
// }}}
// {{{   Para cada linea/partida de la factura (para cada producto
// +--------------------------------------------------------------------+
// | AHora si procesa la ocurrencia de productos de la factura          |
// +--------------------------------------------------------------------+
//
$fali = new Clflinea($conn, $nufa);
for ($i=0; $i<sizeof($fali->faliprod); $i++) {
    $nupr = (int)$fali->faliprod[$i];
    $prod = new Clproduc($conn, $nupr,'renglon');
 
    // a.15
    $lineItem = $xml->createElement("lineItem");
    $lineItem->setAttribute("type","SimpleInvoiceLineItemType");
    $lineItem->setAttribute("number",$i+1);
 
    // a.15.1
      $tradeItemIdentification = $xml->createElement("tradeItemIdentification");
        $codi = ltrim($prod->row["prodea13"],"0");
        $codi = str_pad($codi, 13, "0", STR_PAD_LEFT);
        $gtin = $xml->createElement("gtin",$codi);
        $tmp = $tradeItemIdentification->appendChild($gtin);
      $tmp = $lineItem->appendChild($tradeItemIdentification);
 
        // a.15.2
      $du14 = ltrim($prod->row["prodcupc"],"0");
      $du14 = str_pad($du14, 14, "0", STR_PAD_LEFT);
      $alternateTradeItemIdentification = $xml->createElement("alternateTradeItemIdentification",$du14);
      $alternateTradeItemIdentification->setAttribute("type","BUYER_ASSIGNED");
      $tmp = $lineItem->appendChild($alternateTradeItemIdentification);
 
      // a.15.3
      $tradeItemDescriptionInformation = $xml->createElement("tradeItemDescriptionInformation");
      $tradeItemDescriptionInformation->setAttribute("language","ES");
        $longText = $xml->createElement("longText",trim($prod->row["proddeco"]));
        $tmp = $tradeItemDescriptionInformation->appendChild($longText);
      $tmp = $lineItem->appendChild($tradeItemDescriptionInformation);
 
        // a.15.4
      $invoicedQuantity = $xml->createElement("invoicedQuantity",$fali->faliunif[$i]);
      $invoicedQuantity->setAttribute("unitOfMeasure","CA");
      $tmp = $lineItem->appendChild($invoicedQuantity);
 
      // a.15.5
      $unca = $prod->row["produnca"];
      $aditionalQuantity = $xml->createElement("aditionalQuantity",$unca);
      $aditionalQuantity->setAttribute("QuantityType","NUM_CONSUMER_UNITS");
      $tmp = $lineItem->appendChild($aditionalQuantity);
 
      $prec = $fali->falineto[$i] / $fali->faliunif[$i];
 
      // a.15.6
      $grossPrice = $xml->createElement("grossPrice");
        $Amount = $xml->createElement("Amount",$prec);
        $tmp = $grossPrice->appendChild($Amount);
      $tmp = $lineItem->appendChild($grossPrice);
 
        // a.15.7
      $netPrice = $xml->createElement("netPrice");
        $Amount = $xml->createElement("Amount",$prec);
        $tmp = $netPrice->appendChild($Amount);
      $tmp = $lineItem->appendChild($netPrice);
 
        // a.15.14
      $tradeItemTaxInformation = $xml->createElement("tradeItemTaxInformation");
      $tradeItemTaxInformation = $xml->createElement("tradeItemTaxInformation");
        $taxTypeDescription = $xml->createElement("taxTypeDescription","VAT");
        $tmp = $tradeItemTaxInformation->appendChild($taxTypeDescription);
        $tradeItemTaxAmount = $xml->createElement("tradeItemTaxAmount");
          $taxPercentage = $xml->createElement("taxPercentage",$fali->falipoim[$i]);
          $tmp = $tradeItemTaxAmount->appendChild($taxPercentage);
          $taxAmount = $xml->createElement("taxAmount",$fali->faliimpu[$i]);
          $tmp = $tradeItemTaxAmount->appendChild($taxAmount);
        $tmp = $tradeItemTaxInformation->appendChild($tradeItemTaxAmount);
      $tmp = $lineItem->appendChild($tradeItemTaxInformation);
 
      $tradeItemTaxInformation = $xml->createElement("tradeItemTaxInformation");
      $tradeItemTaxInformation = $xml->createElement("tradeItemTaxInformation");
        $taxTypeDescription = $xml->createElement("taxTypeDescription","GST");
        $tmp = $tradeItemTaxInformation->appendChild($taxTypeDescription);
        $tradeItemTaxAmount = $xml->createElement("tradeItemTaxAmount");
          $taxPercentage = $xml->createElement("taxPercentage","0.00");
          $tmp = $tradeItemTaxAmount->appendChild($taxPercentage);
          $taxAmount = $xml->createElement("taxAmount","0.00");
          $tmp = $tradeItemTaxAmount->appendChild($taxAmount);
        $tmp = $tradeItemTaxInformation->appendChild($tradeItemTaxAmount);
      $tmp = $lineItem->appendChild($tradeItemTaxInformation);
 
        // a.15.15
      $totalLineAmount = $xml->createElement("totalLineAmount");
        $grossAmount = $xml->createElement("grossAmount");
        $Amount = $xml->createElement("Amount",$fali->falineto[$i]);
          $tmp = $grossAmount->appendChild($Amount);
        $tmp = $totalLineAmount->appendChild($grossAmount);
        $netAmount = $xml->createElement("netAmount");
        $Amount = $xml->createElement("Amount",$fali->falineto[$i]);
          $tmp = $netAmount->appendChild($Amount);
        $tmp = $totalLineAmount->appendChild($netAmount);
      $tmp = $lineItem->appendChild($totalLineAmount);
 
    $tmp = $root->appendChild($lineItem);
    $lineItem=null;
}
// }}}
// {{{ Finaliza el documento XML
$ret=$conn->replace("cfdchedra",array("fedinufa"=>$nufa,"fedifoli"=>$g_folio),"fedinufa",true);
 
// a.16
$neto = $fact->row["factneto"]+ $fact->row["factnet2"];
$totalAmount = $xml->createElement("totalAmount");
  $Amount = $xml->createElement("Amount", $neto); 
  $tmp = $totalAmount->appendChild($Amount);
$tmp = $root->appendChild($totalAmount);
 
// a.18
$baseAmount = $xml->createElement("baseAmount");
  $Amount = $xml->createElement("Amount", $neto); 
  $tmp = $baseAmount->appendChild($Amount);
$tmp = $root->appendChild($baseAmount);
 
// a.19
$tax = $xml->createElement("tax");
$tax->setAttribute("type","VAT");
carga_eles($tax, array("taxPercentage"=>$fact->row["factpoim"],
                       "taxAmount"=>$fact->row["factimpu"]));
 
$tax = $xml->createElement("tax");
$tax->setAttribute("type","GST");
carga_eles($tax, array("taxPercentage"=>"0.00",
                       "taxAmount"=>"0.00"));
 
// a.20
$payableAmount = $xml->createElement("payableAmount");
  $Amount = $xml->createElement("Amount", $fact->row["factimto"]); 
  $tmp = $payableAmount->appendChild($Amount);
$tmp = $root->appendChild($payableAmount);
 
$xml->preserveWhiteSpace = false;
$remi = $xml->saveXML();
 $xml->formatOutput = true;
$paso = $xml->save("/tmp/satcched.xml");
return($remi);
}
// }}}
// {{{ carga_eles : genera nuevos elemntos al documento root
function carga_eles($obj, $ele) {
global $root, $xml;
foreach ($ele as $key => $val) {
    $tmp = $xml->createElement($key, satxched_fix($val));
    $tmp = $obj->appendChild($tmp);
}
$tmp = $root->appendChild($obj);
}
// }}}
// {{{ carga_att : genera atributos al elemento indicado
function carga_att($obj, $ele) {
global $root, $xml;
foreach ($ele as $key => $val) $obj->setAttribute($key, satxched_fix($val));
}
// }}}
// {{{ satxched_fixdate :  Genera la fecha en el formato que lo quiere Chedraui -> aaaa-mm-dd
function satxched_fixdate($fech) {
list ($d,$m,$a) = explode("/", $fech);
// $a = "20".str_pad($a, 2, "0", STR_PAD_LEFT);
$m = "-".str_pad($m, 2, "0", STR_PAD_LEFT);
$d = "-".str_pad($d, 2, "0", STR_PAD_LEFT);
$ret = $a.$m.$d;
return $ret;
}
// }}}
// {{{ edi_fech :  Genera la fecha en el formato que lo quiere Chedraui -> aaaammdd
function edi_fech($fech) {
        return (substr($fech,0,4).substr($fech,5,2).substr($fech,8,2));
}
// }}}
// {{{ satxched_fix :  le aplica el trim, el utf_encode, y el reg_replace para quitar los espacios de mas
function satxched_fix($val,$largo=-1) {
$ret = preg_replace('/\s\s+/', ' ', $val);  
if ($largo>0) $ret = substr($ret,0,$largo-1);
$ret = utf8_encode(trim($ret));
return $ret;
}
// }}}
// {{{ fix_fdoc : Cuando el timestamp viene dd/mm/yyyy lo convierte a yyyy-mm-dd
function fix_fdoc($fdoc) {
    if (strpos($fdoc,"/")!==FALSE) { // tiene diagonales viene dd/mm/yyyy hh:mm
        list($f,$h)=explode(" ",$fdoc);
        list($d,$m,$y)=explode("/",$f);
        $fdoc = "$y-$m-$d $h";
    }
    return ($fdoc);
}
// }}}
Ejemplo de uso de la funcion
Este programa genera los datos de la factura electronica que se van a agregar como Addenda a la factura electronica del SAT.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
########
#  Generacion de la Adenda para Chedraui
########
DEFINE(BDD,cte);
require_once("lib/conecta.php");
require_once("satxched.php");
require_once("satxarre.php");
require_once("satxmlsv2.php");
$nufa = "XAFA949325";
$data = satxarre($nufa);
$addenda = satxched($nufa, $data);
file_put_contents("satcched.xml", $addenda);
?>
Al ejecutarse este genera la addenda XML que se muestra a continuacion.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?xml version="1.0" encoding="UTF-8"?>
<requestForPayment type="SimpleInvoiceType" contentVersion="1.3.1" documentStructureVersion="AMC006" documentStatus="ORIGINAL" DeliveryDate="20060901T142818">
  <requestForPaymentIdentification>
    <entityType>INVOICE</entityType>
    <uniqueCreatorIdentification>XAFA949325</uniqueCreatorIdentification>
  </requestForPaymentIdentification>
  <orderIdentification>
    <referenceIdentification type="ON">011320</referenceIdentification>
    <ReferenceDate>20060831</ReferenceDate>
  </orderIdentification>
  <AdditionalInformation>
    <referenceIdentification type="ATZ">123</referenceIdentification>
  </AdditionalInformation>
  <buyer>
    <gln>7507001800019</gln>
  </buyer>
  <seller>
    <gln>7505000065005</gln>
  </seller>
  <currency currencyISOCode="MXN">
    <currencyFunction>BILLING_CURRENCY</currencyFunction>
    <rateOfChange>1</rateOfChange>
  </currency>
  <lineItem type="SimpleInvoiceLineItemType" number="1">
    <tradeItemIdentification>
      <gtin>75002343</gtin>
    </tradeItemIdentification>
    <alternateTradeItemIdentification type="SUPPLIER_ASSIGNED">71011</alternateTradeItemIdentification>
    <tradeItemDescriptionInformation language="ES">
      <longText>ACEITE 1 2 3  12 B  1 LT</longText>
    </tradeItemDescriptionInformation>
    <invoicedQuantity unitOfMeasure="CA">600</invoicedQuantity>
    <netPrice>
      <Amount>142.186</Amount>
    </netPrice>
    <totalLineAmount>
      <netAmount>
        <Amount>85311.6</Amount>
      </netAmount>
    </totalLineAmount>
  </lineItem>
  <lineItem type="SimpleInvoiceLineItemType" number="2">
    <tradeItemIdentification>
      <gtin>75005443</gtin>
    </tradeItemIdentification>
    <alternateTradeItemIdentification type="SUPPLIER_ASSIGNED">71012</alternateTradeItemIdentification>
    <tradeItemDescriptionInformation language="ES">
      <longText>ACEITE 1 2 3  24 B  500 ML</longText>
    </tradeItemDescriptionInformation>
    <invoicedQuantity unitOfMeasure="CA">300</invoicedQuantity>
    <netPrice>
      <Amount>146.28</Amount>
    </netPrice>
    <totalLineAmount>
      <netAmount>
        <Amount>43884.0</Amount>
      </netAmount>
    </totalLineAmount>
  </lineItem>
  <totalAmount>
    <Amount>129195.6</Amount>
  </totalAmount>
  <tax type="VAT">
    <taxPercentage>0.0</taxPercentage>
    <taxAmount>0.0</taxAmount>
  </tax>
  <payableAmount>
    <Amount>129195.6</Amount>
  </payableAmount>
</requestForPayment>