Objects og cloning
Hejsa.Jeg har siddet og bokset med et script der skal oprette en større mængde fakturaer i e-conomics.dk
Jeg skal bruge en funktion kalder CurrentInvoiseLines_CreateFromDataArray se mere her https://www.e-conomic.com/secure/api1/EconomicWebservice.asmx?op=CurrentInvoiceLine_CreateFromDataArray
Mit script fungere hvis jeg kun opretter en fakturalinie, men derudover går det galt, jeg får flg. fejlmeddelse Economic.Api.Exceptions.SchemaException(E00500): The 'id' attribute is not declared. {id=1335783046}.
Problemet opstår ved at XML laver et ref. til det første object, som skulle betyde at de efterfølgende objecter ikke har en ide.
Jeg kan på e-conomics forum se sat flere har haft disse problemer, men jeg kan ikke se hvordan de har løst problemet.
Jeg vil lige sige at jeg har brugt det samme script til at oprette selve fakturaen, og det fungere uden problem. https://www.e-conomic.com/secure/api1/EconomicWebservice.asmx?op=CurrentInvoice_CreateFromDataArray
Mit script ser således ud...
<?
class lines
{
static $ids = 0;
public $id;
public function __construct() {
$this->id = ++self::$ids;
}
public function __clone() {
$this->id = ++self::$ids;
}
}
try
{
$wsdlUrl = 'https://www.e-conomic.com/secure/api1/EconomicWebservice.asmx?WSDL';
$eco = new SoapClient($wsdlUrl, array("trace" => 1, "exceptions" => 1));
$eco->Connect(array(
'agreementNumber' => *****,
'userName' => *****,
'password' => *****));
}
catch(Exception $exception)
{
print("<p><b>Kunne ikke oprette forbindelse</b></p>");
}
$i = 1;
$invoiceArray= array();
$invoicelineArray= array();
$lineArray= array();
$dataLine = array();
$CurrentInvoiceLineData = new lines();
while($berth = mysql_fetch_assoc($bresult)):
$invoice = new stdClass;
$invoice-> Id = $i ;
$invoice-> Number = $i ;
$CurrentInvoiceLineData->Handle =$invoice;
$CurrentInvoiceLineData->Number = $i;
//$CurrentInvoiceLineData->Id = $i;
$CurrentInvoiceLineData->InvoiceHandle = array('Id' =>$Invoiceno);
$CurrentInvoiceLineData->Description = $description.' '.$ProductData->Name;
$CurrentInvoiceLineData->DeliveryDate = date('Y-m-d\TH:i:s');
$CurrentInvoiceLineData->UnitHandle = $ProductData->UnitHandle;
$CurrentInvoiceLineData->ProductHandle = $productHandle;
$CurrentInvoiceLineData->Quantity = 1;
$CurrentInvoiceLineData->UnitNetPrice = $ProductData->SalesPrice;
$CurrentInvoiceLineData->DiscountAsPercent = 0;
$CurrentInvoiceLineData->UnitCostPrice = 0.00;
$CurrentInvoiceLineData->TotalNetAmount = 1;
$CurrentInvoiceLineData->TotalMargin = 100;
$CurrentInvoiceLineData->MarginAsPercent = 100;
$CurrentInvoiceLineData->DepartmentHandle = NULL;
$CurrentInvoiceLineData->DistributionKeyHandle = NULL;
$dataLine['dataArray'][] = clone $CurrentInvoiceLineData;
$i++;
endwhile;
$Invoiceno++;
$eco->CurrentInvoiceLine_CreateFromDataArray( $dataLine );
?>
Hjælp.. jeg troede lige jeg havde styr på class