<?php
Function UploadInvoice($XML_DATA){

include "config.php";  

Try{

        $XML_DATA=  str_replace(',', '.', $XML_DATA);
        $Finded_Header = Find_HEADER($XML_DATA);
        $Finded_Detail = Find_DETAIL($XML_DATA,$Finded_Header['Header_GUID']);

    if ($conn->connect_error) {
                 return "Connection failed: " . $conn->connect_error; 
        } else{
             $sql = "DELETE transactions_header, transactions_details FROM transactions_header "
                     . "INNER JOIN transactions_details ON transactions_header.GUID = transactions_details.GUID "
                     . "WHERE senAFM='$Finded_Header[senAFM]' AND tenDocument='$Finded_Header[tenDocument]' AND tenDate='$Finded_Header[tenDate]'; ";
             
         $sql .=  " INSERT INTO transactions_header ("
        . " tenDate, senAFM, "
        . "tdrName, senDocNumber, tenDocument, tenStatus, "
        . "senVehicleNumber, km, pmoDescription, senSumNetValue, senSumVatValue, "
        . "senPaymentValue, Invoicename, InvoicSeries, "
        . "ggpsCode, datetime, ShopId, MyAfm, senBalanceBefore, senBalanceNow, GUID) "
        . "VALUES ("
        . "'$Finded_Header[tenDate]', '$Finded_Header[senAFM]', '$Finded_Header[tdrName]', "
        . "$Finded_Header[senDocNumber], '$Finded_Header[tenDocument]', $Finded_Header[tenStatus], '$Finded_Header[senVehicleNumber]', '$Finded_Header[km]', "
        . "'$Finded_Header[pmoDescription]', $Finded_Header[senSumNetValue], $Finded_Header[senSumVatValue], "
        . "$Finded_Header[senPaymentValue], '$Finded_Header[Invoicename]','$Finded_Header[InvoicSeries]', "
        . "$Finded_Header[ggpsCode], '$Finded_Header[datetime]', $Finded_Header[ShopId], "
        . "'$Finded_Header[MyAfm]', '$Finded_Header[senBalanceBefore]', '$Finded_Header[senBalanceNow]', '$Finded_Header[Header_GUID]');";
     
         $conn->multi_query($sql. $Finded_Detail);
		$conn->close();
         return "1";
        }

            }catch (Exception $e) {
        return  'ERROR|'.$e->getMessage();
    } 
    
}
    
Function Find_HEADER($XML_DATA)
    {
            $HeaderData= Find_Data($XML_DATA,"<Header>","</Header>");
            $tenDate=Find_Data($HeaderData, "<tenDate>", "</tenDate>");
            $senAFM=Find_Data($HeaderData, "<senAFM>", "</senAFM>");
            $tdrName=Find_Data($HeaderData, "<tdrName>", "</tdrName>");
            $senDocNumber=Find_Data($HeaderData, "<senDocNumber>", "</senDocNumber>");
            $tenDocument=Find_Data($HeaderData, "<tenDocument>", "</tenDocument>");
            $tenStatus=Find_Data($HeaderData, "<tenStatus>", "</tenStatus>");
            $senVehicleNumber=Find_Data($HeaderData, "<senVehicleNumber>", "</senVehicleNumber>");
            $km=Find_Data($HeaderData, "<km>", "</km>");
            $pmoDescription=Find_Data($HeaderData, "<pmoDescription>", "</pmoDescription>");
            $senSumNetValue=number_format((float)Find_Data($HeaderData, "<senSumNetValue>", "</senSumNetValue>"), 2, '.', '');
            $senSumVatValue=number_format((float)Find_Data($HeaderData, "<senSumVatValue>", "</senSumVatValue>"), 2, '.', '');
            $senPaymentValue=number_format((float)Find_Data($HeaderData, "<senPaymentValue>", "</senPaymentValue>"), 2, '.', '');
            $Invoicename=Find_Data($HeaderData, "<Invoicename>", "</Invoicename>");
            $InvoicSeries=Find_Data($HeaderData, "<InvoicSeries>", "</InvoicSeries>");
            $ggpsCode=Find_Data($HeaderData, "<ggpsCode>", "</ggpsCode>");
            $datetime=Find_Data($HeaderData, "<datetime>", "</datetime>");
            $ShopId=Find_Data($HeaderData, "<ShopId>", "</ShopId>");
            $MyAfm=Find_Data($HeaderData, "<MyAfm>", "</MyAfm>");
            $senBalanceBefore=number_format((float)Find_Data($HeaderData, "<senBalanceBefore>", "</senBalanceBefore>"), 2, '.', '');
            $senBalanceNow=number_format((float)Find_Data($HeaderData, "<senBalanceNow>", "</senBalanceNow>"), 2, '.', '');
            $GUID=GUID();
            
    $XML_header=array(
        "tenDate"=>$tenDate, "senAFM"=>$senAFM, "tdrName"=> $tdrName,
        "senDocNumber"=>$senDocNumber, "tenDocument"=>$tenDocument, "tenStatus"=>$tenStatus, "senVehicleNumber"=> $senVehicleNumber,
        "km"=>$km, "pmoDescription"=>$pmoDescription, "senSumNetValue"=> $senSumNetValue,
        "senSumNetValue"=>$senSumNetValue, "senSumVatValue"=>$senSumVatValue, "senPaymentValue"=> $senPaymentValue,
        "Invoicename"=>$Invoicename, "InvoicSeries"=>$InvoicSeries, "ggpsCode"=> $ggpsCode,
        "datetime"=>$datetime, "ShopId"=>$ShopId, "MyAfm"=> $MyAfm, "senBalanceBefore"=> $senBalanceBefore, "senBalanceNow"=> $senBalanceNow, "Header_GUID"=> $GUID
        );
    
         return $XML_header ;
}
Function Find_DETAIL($XML_DATA,$Header_GUID)
    {
    $DetailData=Find_Data($XML_DATA,"<Detail>","</Detail>");
    $TotLines=Find_Data($DetailData,"<TotLines>","</TotLines>");
    global $sql;
        for ($i = 1; $i <= $TotLines; $i++ ) {
            $line = "<LINE". strval($i);
            $LINE=Find_Data($DetailData, "<LINE".strval($i), "</LINE".strval($i), ">");//<<<<<<<line index
            $selPrice=number_format((float)Find_Data($LINE, "<selPrice>", "</selPrice>"), 2, '.', '');
            $selQtyA=Find_Data($LINE, "<selQtyA>", "</selQtyA>");
            $itmDescription=Find_Data($LINE, "<itmDescription>", "</itmDescription>");
            $selNetValue=Find_Data($LINE, "<selNetValue>", "</selNetValue>");
            $selVatValue=Find_Data($LINE, "<selVatValue>", "</selVatValue>");
            $selVatPcnt=Find_Data($LINE, "<selVatPcnt>", "</selVatPcnt>");
            $selTotalValue=Find_Data($LINE, "<selTotalValue>", "</selTotalValue>");
            
        $sql .= " INSERT INTO transactions_details("
        . " selPrice, selQtyA, "
        . "itmDescription , selNetValue, selVatValue,"
        . "selVatPcnt, selTotalValue, GUID) "
        . "VALUES ("
        . "'$selPrice', '$selQtyA', "
        . "'$itmDescription', '$selNetValue', '$selVatValue', "
        . "'$selVatPcnt', '$selTotalValue', '$Header_GUID');";
         
        } 
         return $sql ;
    }
        
Function Find_Data($XML_DATA, $Start_St, $End_St ){   
   try {
        $end_str = 0;
        $pure_paket_start=strpos($XML_DATA, $Start_St)+strlen($End_St)-1;
        $end_str = strpos($XML_DATA,$End_St);
        $complete_str=substr($XML_DATA, $pure_paket_start, $end_str - $pure_paket_start);
        return $complete_str;
            
   }
   catch (Exception $e) {return  'ERROR|'.$Start_St.$e->getMessage();}
    
}
    
Function GUID()
{
    if (function_exists('com_create_guid') === true)
    {
        return trim(com_create_guid(), '{}');
    }
        
    return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}




