آگاه‌سازی‌ها
پاک‌کردن همه

ردیفی برای فاکتور تعریف نشده است

6 ارسال ها
2 کاربران
0 Likes
246 نمایش‌
(@adeln1368)
ارسال‌: 4
Active Member
شروع کننده موضوع
 

هنگام ذخیره پیش فاکتور بوسیله api با خطای "ردیفی برای فاکتور تعریف نشده است" مواجه می شویم. لازم به ذکر است فیلدهای مربوط به آبجکت InvoiceInfo از جمله آرایه Details که محصولات پیش فاکتور می باشد مقداردهی شده اند.

لطفا راهنمایی بفرمایید

 

نمونه کدم رو گذاشتم خدمتتون
$soapClient = new SoapClient($url);
$params = array(
'userName' => $username,
'password' => $password,
'formInfo' => array(
'CrmObjectTypeCode' => 'order1',
'CreatDate' => date('Y-m-d'),
'IdentityId' => 'id',
'Description' => $text,
'Subject' => 'فاکتور شماره ' . $invoice->code,
'DetailInfo' => array(
'ProductCode' => "1",
'ProductName' => 'تست',
'BaseUnitPrice' => "1000",
'FinalUnitPrice' => "1000",
'Count' => "2",
'TotalUnitPrice' => "2000",
)
)
);
$result = $soapClient->SaveInvoice($params);
لطفا راهنماییم کنید

 
ارسال‌شده : 18 شهریور 1403 7:23 ب.ظ
برچسب‌های موضوع
(@m-yadegar)
ارسال‌: 51
Trusted Member
 

با سلام و احترام

کد ارسالی شما مشکلاتی داشت که به شرح زیر اصلاح گردید. مطابق کد زیر پیش فاکتور بدون خطا ایجاد میگردد.

لازم به ذکر میباشد که کد را مطابق دیتای خودتون اصلاح و سپس استفاده نمایید.

$soapClient = new SoapClient($url);
$params = array(
'userName' => $username,
'password' => $password,
'invoiceInfo' => array(
'CrmObjectTypeCode' => 'pish_foroush',
'IdentityId' => '82caaf6b-49fd-4c0c-8aca-f79abdc370e4',
'Subject' => 'فاکتور شماره ' . $invoice->code,
'InvoiceType' => 'Quote',
'FinalValue' => "200",
'Details' => array(
'InvoiceDetailInfo' => array(
'ProductCode' => "101",
'ProductName' => 'تست',
'BaseUnitPrice' => "100",
'FinalUnitPrice' => "100",
'Count' => "2",
'TotalUnitPrice' => "200",
'TotalValue' => "200",
'Discount' => "0",
)
)
)
);
$result = $soapClient->SaveInvoice($params);

 
ارسال‌شده : 24 شهریور 1403 1:19 ب.ظ
(@adeln1368)
ارسال‌: 4
Active Member
شروع کننده موضوع
 

ممنون از پاسخ شما این مورد رو حل کردم ولی ی مشکل دیگه پیش اومد خطای زیر

Attempted to divide by zero.

کدیکه زدم هم خدمتتون ارسال می کنم

$username = "admin";
$password = "Apd_1368";

$text = 'نام مشتری:';
$text .= $invoice->name;
$text .= ' - شماره فاکتور در سایت:';
$text .= $invoice->code;

$discount = (int)$invoice->coupon_discount + (int)$invoice->presenter_discount + (int)$invoice->agent_discount;
foreach ($invoice->items as $key => $item) {
$product_code=$item->product ? $item->product->code : 0;
$product_name=$item->product ? $item->product->title : $item->product_id;
$FinalUnitPrice=$item->product ? $item->product->base_price : $item->price;
$TotalUnitPrice=$item->price * $item->count;
$TotalValue=($item->product ? $item->product->base_price : $item->price) * $item->count;
$Discount=($item->product ? $item->product->base_price : $item->price) * $item->count - $item->price * $item->count;
$baskets[$key]= ['InvoiceDetailInfo' => [
'ProductCode' => "$product_code",
'ProductName' => "$product_name",
'BaseUnitPrice' => "$item->price",
'FinalUnitPrice' => "$FinalUnitPrice",
'Count' => "$item->count",
'TotalUnitPrice' => "$TotalUnitPrice",
'TotalValue' => "$TotalValue",
'Discount' => "$Discount",
]];
}
$url = 'http://185.158.172.246/services/api/iinvoice.svc?wsdl';
$soapClient = new SoapClient($url);
$FinalValue=$invoice->total_price - $discount + $invoice->shipping_cost;
$params = array(
'userName' => $username,
'password' => $password,
'invoiceInfo' => array(
'CrmObjectTypeCode' => 'PISHFAKTOR',
'IdentityId' => 'd65a5986-b0de-443f-b8f7-89f61010f3f6',
'Description' => $text,
'Subject' => 'فاکتور شماره ' . $invoice->code,
'InvoiceType' => 'Quote',
'FinalValue' => "$FinalValue",
'Discount' => "$discount",
'Details' => $baskets,
)
);
$result = $soapClient->SaveInvoice($params);


dd($result,$params,$invoice);
 
ارسال‌شده : 27 مهر 1403 5:56 ب.ظ
(@m-yadegar)
ارسال‌: 51
Trusted Member
 

با سلام و احترام

در صورتیکه پارامتر "TotalUnitPrice" از کلاس InvoiceInfo که معادل "مبلغ کل ردیف فاکتور" میباشد با صفر مقداردهی شود خطای "Attempted to divide by zero" مشاهده خواهد شد. لطفا بررسی فرمایید به این پارامتر مقدار صفر پاس داده نشده باشد.

در صورت رفع نشدن مشکل، مجدد از طریق همین فروم پیگیری نمایید.

با سپاس 

 
ارسال‌شده : 29 مهر 1403 11:08 ق.ظ
(@adeln1368)
ارسال‌: 4
Active Member
شروع کننده موضوع
 
array:3 [ // app/Helpers/general_helper.php:1885
  "userName" => "admin"
  "password" => "Apd_1368"
  "invoiceInfo" => array:9 [
    "CrmObjectTypeCode" => "PISHFAKTOR"
    "IdentityId" => "d65a5986-b0de-443f-b8f7-89f61010f3f6"
    "Description" => "نام مشتری:فاطمه - شماره فاکتور در سایت:202408310003"
    "Subject" => "فاکتور شماره 202408310003"
    "InvoiceType" => "Quote"
    "TotalUnitPrice" => "2502000"
    "FinalValue" => "2003000"
    "Discount" => "500000"
    "Details" => array:2 [
      0 => array:1 [
        "InvoiceDetailInfo" => array:8 [
          "ProductCode" => "51501006"
          "ProductName" => "آینه گردان بیوتی"
          "BaseUnitPrice" => "2000"
          "FinalUnitPrice" => "50000"
          "Count" => "1"
          "TotalUnitPrice" => "2000"
          "TotalValue" => "50000"
          "Discount" => "48000"
        ]
      ]
      1 => array:1 [
        "InvoiceDetailInfo" => array:8 [
          "ProductCode" => "51503066"
          "ProductName" => "صندلی بار کازمو"
          "BaseUnitPrice" => "2500000"
          "FinalUnitPrice" => "2500000"
          "Count" => "1"
          "TotalUnitPrice" => "2500000"
          "TotalValue" => "2500000"
          "Discount" => null
        ]
      ]
    ]
  ]
]

ببینید من اینو ارسال می کنم

 
ارسال‌شده : 2 آبان 1403 6:41 ب.ظ
(@m-yadegar)
ارسال‌: 51
Trusted Member
 

با سلام و احترام

یک نمونه کد php (با دو ردیف محصول) برای شما قرار دادم . لطفا کد خود را مطابق آن اصلاح فرمایید. کد زیر بدون خطا درنرم افزار crm پیش فاکتور ایجاد میکند.

لارم به ذکر است دیتاها را مطابق crm خودتان وارد نمایید.

<?php

try{
$username = 'admin';
$password = '???';
$url = 'http://[crm address]/services/api/iinvoice.svc?wsdl';
$soapClient = new SoapClient($url);
$params = array(
'userName' => $username,
'password' => $password,
'invoiceInfo' => array(
'CrmObjectTypeCode' => 'pish_foroush',
'IdentityId' => '638fc439-b38c-4473-a2cd-72e848b135f9',
'InvoiceType' => 'Quote',
'TotalValue' => "1100",
'FinalValue' => "1100",
'Details' => array(
'InvoiceDetailInfo' => array (
array (
'ProductCode' => "100",
'ProductName' => 'موس',
'BaseUnitPrice' => "100",
'FinalUnitPrice' => "200",
'Count' => "2",
'TotalUnitPrice' => "200",
'Discount' => "0",
),
array (
'ProductCode' => "1020",
'ProductName' => 'مانیتور',
'BaseUnitPrice' => "300",
'FinalUnitPrice' => "900",
'Count' => "3",
'TotalUnitPrice' => "900",
'Discount' => "0",
)
)
)
)
);
$result = $soapClient->SaveInvoice($params);

if ($result->SaveInvoiceResult->Success){
echo "YourCode : " . $result->SaveInvoiceResult->CrmId;
echo '<br>';
echo json_encode($result, JSON_UNESCAPED_UNICODE);
}else

echo $result->SaveInvoiceResult->Message;
}catch ( Exception $e ) {
echo $e->getMessage();
}

این نوشته در 2 ماه قبل 3 بار توسط m.yadegar اصلاح شد
 
ارسال‌شده : 6 آبان 1403 12:22 ق.ظ
اشتراک:
پیمایش به بالا