Skip to content

Commit 196cfd2

Browse files
20210406 deployment
1 parent 94bffec commit 196cfd2

File tree

2 files changed

+51
-6
lines changed

2 files changed

+51
-6
lines changed

src/Gateways/PorticoConnector.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ public function manageTransaction(ManagementBuilder $builder)
735735
// }
736736

737737
if (count($builder->commercialData->lineItems) > 0) {
738-
$linetItemsNode = $xml->createElement('LineItems');
738+
$lineItemsNode = $xml->createElement('LineItems');
739739

740740
foreach ($builder->commercialData->lineItems as $lineItem) {
741741
$linetItemNode = $xml->createElement('LineItemDetail');
@@ -784,18 +784,21 @@ public function manageTransaction(ManagementBuilder $builder)
784784
// $visaCorporateDataNode->appendChild($xml->createElement('LineItemTreatmentCode', $builder->commercialData->somethingsome));
785785
// }
786786

787-
$linetItemsNode->appendChild($linetItemNode);
787+
$lineItemsNode->appendChild($linetItemNode);
788788
};
789789
}
790790

791-
$visaCorporateDataNode->appendChild($linetItemsNode);
791+
if (!empty($lineItemsNode)) {
792+
$visaCorporateDataNode->appendChild($lineItemsNode);
793+
}
794+
792795
$commercialDataNode->appendChild($visaCorporateDataNode);
793796
$root->appendChild($commercialDataNode);
794797
} elseif ($builder->cardType == 'MC') {
795798
$mastercardCorporateDataNode = $xml->createElement('MC');
796799

797800
if (count($builder->commercialData->lineItems) > 0) {
798-
$linetItemsNode = $xml->createElement('LineItems');
801+
$lineItemsNode = $xml->createElement('LineItems');
799802

800803
foreach ($builder->commercialData->lineItems as $lineItem) {
801804
$linetItemNode = $xml->createElement('LineItemDetail');
@@ -820,11 +823,11 @@ public function manageTransaction(ManagementBuilder $builder)
820823
$linetItemNode->appendChild($xml->createElement('UnitOfMeasure', $lineItem->unitOfMeasure));
821824
}
822825

823-
$linetItemsNode->appendChild($linetItemNode);
826+
$lineItemsNode->appendChild($linetItemNode);
824827
};
825828
}
826829

827-
$mastercardCorporateDataNode->appendChild($linetItemsNode);
830+
$mastercardCorporateDataNode->appendChild($lineItemsNode);
828831
$commercialDataNode->appendChild($mastercardCorporateDataNode);
829832
$root->appendChild($commercialDataNode);
830833
}

test/Integration/Gateways/PorticoConnector/CommercialCardTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,48 @@ public function test02VisaLevel3() {
127127
}
128128
}
129129

130+
// test w/o line items, which seem to be optional
131+
public function test02aVisaLevel3() {
132+
$response = $this->getVisaManual()->charge(112.34) // amount results in commercialIndicator val of 'B'
133+
->withCurrency('USD')
134+
->withAllowDuplicates(true)
135+
->withCommercialRequest(true)
136+
->withAddress($this->getAddy())
137+
->execute();
138+
139+
if ($response->commercialIndicator === 'B') {
140+
$commercialData = new CommercialData(TaxType::SALES_TAX, CommercialIndicator::LEVEL_III);
141+
$commercialData->poNumber = 1784951399984509620;
142+
$commercialData->taxAmount = 0;
143+
$commercialData->destinationPostalCode = '85212';
144+
$commercialData->destinationCountryCode = "USA";
145+
$commercialData->originPostalCode = "22193";
146+
$commercialData->summaryCommodityCode = "SCC";
147+
$commercialData->customerVatNumber = "123456789";
148+
$commercialData->vatInvoiceNumber = "UVATREF162";
149+
$datetime = new DateTime();
150+
$formattedDateTime = str_replace(",", "T", date_format($datetime, 'Y-m-d,H:i:s'));
151+
$commercialData->orderDate = $formattedDateTime;
152+
$commercialData->freightAmount = 0.01;
153+
$commercialData->dutyAmount = 0.01;
154+
$commercialData->additionalTaxDetails = new AdditionalTaxDetails(
155+
.01,
156+
TaxCategory::VAT,
157+
.04,
158+
"VAT"
159+
);
160+
161+
$cpcEditResponse = $response->edit()
162+
->withCommercialData($commercialData)
163+
->withTaxType(TaxType::NOT_USED)
164+
->execute();
165+
166+
$this->assertEquals('00', $cpcEditResponse->responseCode);
167+
} else {
168+
$this->assertTrue(false);
169+
}
170+
}
171+
130172
public function test03MasterCardLevel3() {
131173
$response = $this->getMasterCardManual()->charge(111.06) // amount results in commercialIndicator val of 'S'
132174
->withCurrency('USD')

0 commit comments

Comments
 (0)