با سلام و تشکر بابت راهنمایی های شما تا به این لحظه لطفا در رابطه با موارد ذیل راهنمایی بفرمایید:
1- کد:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header/>
<s:Body>
<SaveInvoice xmlns="http://tempuri.org/">
<username>admin</username>
<password>admin</password>
<invoice
xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:CrmObjectTypeCode>SalesInvoice</d4p1:CrmObjectTypeCode>
<d4p1:IdentityId>4631b8e4-b360-4c8d-ae3c-d34c43b88fbd</d4p1:IdentityId>
<d4p1:Subject>فاکتور تست SOAP</d4p1:Subject>
<d4p1:AssignedTo>Admin</d4p1:AssignedTo>
<d4p1:InvoiceDate>2025-11-13T02:55:21.283</d4p1:InvoiceDate>
<d4p1:VatPercent>9</d4p1:VatPercent>
<d4p1:Details>
<d4p1:InvoiceDetailInfo>
<d4p1:ProductId>46da9490-ee92-42df-ba61-64d62b4da6b9</d4p1:ProductId>
<d4p1:ProductCode>Product-1</d4p1:ProductCode>
<d4p1:ProductName>محصول اول</d4p1:ProductName>
<d4p1:IsService>false</d4p1:IsService>
<d4p1:ProductUnitTypeName>قطعه</d4p1:ProductUnitTypeName>
<d4p1:BaseUnitPrice>100000</d4p1:BaseUnitPrice>
<d4p1:Count>1</d4p1:Count>
<d4p1:FinalUnitPrice>109000</d4p1:FinalUnitPrice>
<d4p1:TotalUnitPrice>100000</d4p1:TotalUnitPrice>
<d4p1:TotalVat>9000</d4p1:TotalVat>
</d4p1:InvoiceDetailInfo>
</d4p1:Details>
<d4p1:TotalValue>100000</d4p1:TotalValue>
<d4p1:Vat>9000</d4p1:Vat>
<d4p1:FinalValue>109000</d4p1:FinalValue>
</invoice>
</SaveInvoice>
</s:Body>
</s:Envelope>
روی دامنه ی دمو درخواست میشه اما خطای
با سلام و احترام
1. کد create invoice شما اصلاح شد.
سلام وقت بخیر
کد به این شکل تنظیم شد:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SaveInvoice xmlns="http://tempuri.org/">
<userName>admin</userName>
<password>admin</password>
<invoiceInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts">
<d4p1:CrmObjectTypeCode>FACTOR</d4p1:CrmObjectTypeCode>
<d4p1:CrmObjectTypeId>97a23dc2-b54c-495b-8133-80c0c37adebf</d4p1:CrmObjectTypeId>
<d4p1:CrmObjectTypeIndex>5</d4p1:CrmObjectTypeIndex>
<d4p1:IdentityId>a3968425-049a-43ea-a798-8811e88a46fd</d4p1:IdentityId>
<d4p1:Subject>تست ن8ن (فاکتور فروش)</d4p1:Subject>
<d4p1:FinalValue>3612188</d4p1:FinalValue>
<d4p1:TotalValue>3663200</d4p1:TotalValue>
<d4p1:Discount>42738.5</d4p1:Discount>
<d4p1:DiscountPercent>3.5</d4p1:DiscountPercent>
<d4p1:Toll>0</d4p1:Toll>
<d4p1:TollPercent>0</d4p1:TollPercent>
<d4p1:Vat>0</d4p1:Vat>
<d4p1:VatPercent>0</d4p1:VatPercent>
<d4p1:TotalDiscountPercent>3.5</d4p1:TotalDiscountPercent>
<d4p1:InvoiceType>Invoice</d4p1:InvoiceType>
<d4p1:Details>
<d4p1:InvoiceDetailInfo>
<d4p1:ProductId>405a20b2-603e-467c-a098-a0ba7c5f4cec</d4p1:ProductId>
<d4p1:ProductCode>gold-18k-parsian-2pack-kids50-1</d4p1:ProductCode>
<d4p1:IsService>false</d4p1:IsService>
<d4p1:Count>1</d4p1:Count>
<d4p1:BaseUnitPrice>11202000</d4p1:BaseUnitPrice>
<d4p1:FinalUnitPrice>1178361.5</d4p1:FinalUnitPrice>
<d4p1:TotalUnitPrice>1178361.5</d4p1:TotalUnitPrice>
<d4p1:InvoiceProperty0>0</d4p1:InvoiceProperty0>
<d4p1:InvoiceProperty1>9</d4p1:InvoiceProperty1>
<d4p1:InvoiceProperty2>1</d4p1:InvoiceProperty2>
<d4p1:InvoiceProperty3>0</d4p1:InvoiceProperty3>
<d4p1:InvoiceProperty4>0</d4p1:InvoiceProperty4>
<d4p1:TotalDiscount>42738.5</d4p1:TotalDiscount>
<d4p1:TotalToll>8200</d4p1:TotalToll>
<d4p1:TotalVat>0</d4p1:TotalVat>
</d4p1:InvoiceDetailInfo>
</d4p1:Details>
</invoiceInfo>
</SaveInvoice>
</s:Body>
</s:Envelope>
در خروجی به این صورت میاد:
a
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><SaveInvoiceResponse xmlns="http://tempuri.org/"><SaveInvoiceResult xmlns:a="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:Message>ردیفی برای فاکتور تعریف نشده است</a:Message><a:Success>false</a:Success><a:CrmId>00000000-0000-0000-0000-000000000000</a:CrmId></SaveInvoiceResult></SaveInvoiceResponse></s:Body></s:Envelope>
چندین متغیر رو عوض کردم اما بازم خطا میگیرم
این هم خروجی soapui واقعی فاکتورم:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<FindInvoiceByIdResponse xmlns="http://tempuri.org/">
<FindInvoiceByIdResult xmlns:a="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Message i:nil="true"/>
<a:Success>true</a:Success>
<a:InvoiceInfo>
<a:CreatDate>2025-11-16T10:11:45.813</a:CreatDate>
<a:CrmId>a3ddc04a-9f53-484f-9f10-04a4aa5a6e7d</a:CrmId>
<a:CrmObjectTypeCode>FACTOR</a:CrmObjectTypeCode>
<a:CrmObjectTypeId>97a23dc2-b54c-495b-8133-80c0c37adebf</a:CrmObjectTypeId>
<a:CrmObjectTypeIndex>5</a:CrmObjectTypeIndex>
<a:CrmObjectTypeName>فاکتور فروش (شمش،سکه)</a:CrmObjectTypeName>
<a:ExtendedProperties>
<a:BaseCrmObjectExtendedPropertyInfo>
<a:Name>ننننن</a:Name>
<a:UserKey>fgfgf</a:UserKey>
<a:Value/>
</a:BaseCrmObjectExtendedPropertyInfo>
</a:ExtendedProperties>
<a:ModifyDate>2025-11-16T10:11:46.283</a:ModifyDate>
<a:ParentCrmObjectId>e891dd2d-251c-4b69-b1f8-9bf49f787aef</a:ParentCrmObjectId>
<a:ProcessStateIndex i:nil="true"/>
<a:RefId/>
<a:Stage/>
<a:StageId i:nil="true"/>
<a:Tags xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:Description/>
<a:IdentityId>1c8ddc2e-810d-432d-836b-c070584db02a</a:IdentityId>
<a:Subject>تست</a:Subject>
<a:BillableObjectState>تایید و شماره گذاری شده</a:BillableObjectState>
<a:FinalValue>5869228.00</a:FinalValue>
<a:Number>6817</a:Number>
<a:AdditionalCosts>69000.00</a:AdditionalCosts>
<a:AssignedTo>admin</a:AssignedTo>
<a:AssignedToId>cbebf403-74a7-496d-b989-4a4472aeec6f</a:AssignedToId>
<a:Details>
<a:InvoiceDetailInfo>
<a:BaseUnitPrice>11184000.00</a:BaseUnitPrice>
<a:Count>0.5000</a:Count>
<a:DetailDescription/>
<a:DiscountPercent>3.200</a:DiscountPercent>
<a:FinalUnitPrice>5792028.00</a:FinalUnitPrice>
<a:Id>10823</a:Id>
<a:InventoryCode/>
<a:InventoryName/>
<a:InvoiceProperty0>0</a:InvoiceProperty0>
<a:InvoiceProperty1>7.000</a:InvoiceProperty1>
<a:InvoiceProperty10/>
<a:InvoiceProperty11/>
<a:InvoiceProperty12/>
<a:InvoiceProperty13/>
<a:InvoiceProperty14/>
<a:InvoiceProperty15/>
<a:InvoiceProperty16/>
<a:InvoiceProperty17/>
<a:InvoiceProperty18/>
<a:InvoiceProperty19/>
<a:InvoiceProperty2>1</a:InvoiceProperty2>
<a:InvoiceProperty3>0.00</a:InvoiceProperty3>
<a:InvoiceProperty4>0.00</a:InvoiceProperty4>
<a:InvoiceProperty5/>
<a:InvoiceProperty6/>
<a:InvoiceProperty7/>
<a:InvoiceProperty8/>
<a:InvoiceProperty9/>
<a:IsService>false</a:IsService>
<a:ProductCode>parsian 0.500</a:ProductCode>
<a:ProductId>0ad2f6d8-df57-480f-9fdf-c40679f7dcca</a:ProductId>
<a:ProductName>سکه پارسیان ۵۰۰ سوت (۰٫۵۰۰گرمی طلای ۱۸ عیار) [وزن]: 0.5 [اج ساخته]: 0 [اج درصدسکه]: 7 [اج ثابت ]:</a:ProductName>
<a:ProductUnitTypeName>گرم</a:ProductUnitTypeName>
<a:ReturnedCount>0</a:ReturnedCount>
<a:Serial/>
<a:TotalDiscount>191472.00</a:TotalDiscount>
<a:TotalToll>0.00</a:TotalToll>
<a:TotalUnitPrice>5983500.00</a:TotalUnitPrice>
<a:TotalVat>0.00</a:TotalVat>
</a:InvoiceDetailInfo>
</a:Details>
<a:Discount>191472.00</a:Discount>
<a:DiscountPercent>3.20</a:DiscountPercent>
<a:ExpireDate i:nil="true"/>
<a:InvoiceDate>2025-11-16T10:11:45.843</a:InvoiceDate>
<a:InvoiceType>Invoice</a:InvoiceType>
<a:PriceListName i:nil="true"/>
<a:QuoteId i:nil="true"/>
<a:Toll>8200.00</a:Toll>
<a:TollPercent>0</a:TollPercent>
<a:TotalDiscountPercent>3.20</a:TotalDiscountPercent>
<a:TotalValue>5983500.00</a:TotalValue>
<a:Vat>0.00</a:Vat>
<a:VatPercent>0</a:VatPercent>
</a:InvoiceInfo>
<a:InvoiceInfoList i:nil="true"/>
</FindInvoiceByIdResult>
</FindInvoiceByIdResponse>
</s:Body>
</s:Envelope>
با متد rest هم این کد رو میفرستم و crmid میگیرم:
{
"crmObjectTypeCode": "FACTOR",
"identityId": "a3968425-049a-43ea-a798-8811e88a46fd",
"subject": "تست (فاکتور فروش)",
"discountPercent": 3.5,
"invoiceDate": "2025-11-17T21:01:38.844Z",
"expireDate": "2025-11-17T21:01:38.844Z",
"details": [
{
"productId": "405a20b2-603e-467c-a098-a0ba7c5f4cec",
"productCode": "gold-18k-parsian-2pack-kids50-1",
"isService": false,
"count": 1,
"baseUnitPrice": 11202000,
"totalUnitPrice": 11202000,
"discountPercent": 3.5,
"totalToll": 8200,
"invoiceProperty0": 0,
"invoiceProperty1": 9,
"invoiceProperty2": 1,
"invoiceProperty3": 0,
"invoiceProperty4": 0
}
]
}
اما مشکلی که اینجا هم دارم اینه که مقادیر invoiceproperty نمیشینه
هر کردوم از راههای بالا رو بگید که به نتیجه برسم ممنون میشم ولی اگه متد rest رو بگید بهتر ممنونم
این رو هم اضافه کنم که فاکتور های من از نوع محاسباتیه و اکسل و فرمول داره که توی crm بارگذاری و تعریف شده
@haghanigold
با سلام
invoiceproperty فیلد های اضافه ردیف فاکتور هستن که به فاکتور اضافه میشوند. من متوجه نشدم این فیلدها محاسباتی هستن یا extended property های اضافه شده به فاکتور؟
سلام ممنونم
بله این ها invoiceproperty هستند مثلا اجرت یا سود یا هزینه ی ارسال یا هزینه ی جعبه و مقادیرش هم ریالی یا درصدی هستند، اون موضوعی که عرض کردم این بود که فاکتورم از نوع محاسباتیه یعنی در تنظیمات فاکتور تیک محاسباتی رو زدم و یک اکسل فرمول دار رو بارگذاری کردم و invoiceproperty رو روش تنظیم کردم
با سلام و احترام
با سلام و احترام
در rest api ها متاسفانه invoiceproperty مشکل دارد که به زودی توسط تیم فنی مرتفع خواهد شد.
در سرویس های soap مشکلی ندارند.
اروری که ارسال فرمودید "ردیفی برای فاکتور تعریف نشده است" میباشد مربوط به invoiceproperty نمیباشد.
نمونه کد زیر بدون خطا میباشد.
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
</s:Header>
<s:Body>
<SaveInvoice xmlns="http://tempuri.org/">
<userName>admin</userName>
<password>؟؟؟</password>
<invoiceInfo xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:CrmObjectTypeCode>sales_invoice</d4p1:CrmObjectTypeCode>
<d4p1:ExtendedProperties>
<d4p1:BaseCrmObjectExtendedPropertyInfo>
<d4p1:Name>تست متن</d4p1:Name>
<d4p1:UserKey>Text_1</d4p1:UserKey>
<d4p1:Value>تست</d4p1:Value>
</d4p1:BaseCrmObjectExtendedPropertyInfo>
</d4p1:ExtendedProperties>
<d4p1:IdentityId>de6ebafa-117c-4f34-892c-8e6301658d09</d4p1:IdentityId>
<d4p1:Subject>فکتور تست</d4p1:Subject>
<d4p1:Details>
<d4p1:InvoiceDetailInfo>
<d4p1:BaseUnitPrice>100</d4p1:BaseUnitPrice>
<d4p1:Count>1</d4p1:Count>
<d4p1:FinalUnitPrice>100</d4p1:FinalUnitPrice>
<d4p1:IsService>false</d4p1:IsService>
<d4p1:ProductCode>A1</d4p1:ProductCode>
<d4p1:ReturnedCount>0</d4p1:ReturnedCount>
<d4p1:TotalDiscount>0</d4p1:TotalDiscount>
<d4p1:TotalToll>100</d4p1:TotalToll>
<d4p1:TotalUnitPrice>100</d4p1:TotalUnitPrice>
<d4p1:TotalVat>0</d4p1:TotalVat>
</d4p1:InvoiceDetailInfo>
<d4p1:InvoiceDetailInfo>
<d4p1:BaseUnitPrice>200</d4p1:BaseUnitPrice>
<d4p1:Count>1</d4p1:Count>
<d4p1:FinalUnitPrice>200</d4p1:FinalUnitPrice>
<d4p1:InvoiceProperty0>100</d4p1:InvoiceProperty0>
<d4p1:InvoiceProperty1>200</d4p1:InvoiceProperty1>
<d4p1:IsService>false</d4p1:IsService>
<d4p1:ProductCode>A100</d4p1:ProductCode>
<d4p1:ReturnedCount>0</d4p1:ReturnedCount>
<d4p1:TotalDiscount>0</d4p1:TotalDiscount>
<d4p1:TotalToll>200</d4p1:TotalToll>
<d4p1:TotalUnitPrice>200</d4p1:TotalUnitPrice>
<d4p1:TotalVat>0</d4p1:TotalVat>
</d4p1:InvoiceDetailInfo>
</d4p1:Details>
<d4p1:Discount>0</d4p1:Discount>
<d4p1:InvoiceType>Invoice</d4p1:InvoiceType>
<d4p1:Toll>0</d4p1:Toll>
<d4p1:TollPercent>0</d4p1:TollPercent>
<d4p1:TotalDiscountPercent>0</d4p1:TotalDiscountPercent>
<d4p1:TotalValue>300</d4p1:TotalValue>
<d4p1:Vat>0</d4p1:Vat>
<d4p1:VatPercent>0</d4p1:VatPercent>
</invoiceInfo>
</SaveInvoice>
</s:Body>
</s:Envelope>
متشکرم ثبت فاکتور اوکی شد سوالی که الان دارم اینه که بیش از نیمی از سفارشات من بیش از یک ردیف فاکتور داره برای اینکه چند ردیف فاکتور ایجاد و ثبت بشه راهکار چیه؟
با سلام و احترام
سمپل دو ردیف خدمت شما.
<d4p1:Details>
<d4p1:InvoiceDetailInfo>
<d4p1:BaseUnitPrice>100</d4p1:BaseUnitPrice>
<d4p1:Count>1</d4p1:Count>
<d4p1:FinalUnitPrice>100</d4p1:FinalUnitPrice>
<d4p1:IsService>false</d4p1:IsService>
<d4p1:ProductCode>code1</d4p1:ProductCode>
<d4p1:ReturnedCount>0</d4p1:ReturnedCount>
<d4p1:TotalDiscount>0</d4p1:TotalDiscount>
<d4p1:TotalToll>100</d4p1:TotalToll>
<d4p1:TotalUnitPrice>100</d4p1:TotalUnitPrice>
<d4p1:TotalVat>0</d4p1:TotalVat>
</d4p1:InvoiceDetailInfo>
<d4p1:InvoiceDetailInfo>
<d4p1:BaseUnitPrice>200</d4p1:BaseUnitPrice>
<d4p1:Count>1</d4p1:Count>
<d4p1:FinalUnitPrice>200</d4p1:FinalUnitPrice>
<d4p1:InvoiceProperty0>100</d4p1:InvoiceProperty0>
<d4p1:InvoiceProperty1>200</d4p1:InvoiceProperty1>
<d4p1:IsService>false</d4p1:IsService>
<d4p1:ProductCode>code2</d4p1:ProductCode>
<d4p1:ReturnedCount>0</d4p1:ReturnedCount>
<d4p1:TotalDiscount>0</d4p1:TotalDiscount>
<d4p1:TotalToll>200</d4p1:TotalToll>
<d4p1:TotalUnitPrice>200</d4p1:TotalUnitPrice>
<d4p1:TotalVat>0</d4p1:TotalVat>
</d4p1:InvoiceDetailInfo>
</d4p1:Details>
متشکرم، دوسوال مطرحه که ممنون میشم راهنمایی کنید،
1-فاکتور های من سفارشی طراحی شدن یعنی آیتم ها(InvoiceProperty) در اکسل سفارشی سازی شدن و وقتی در فاکتور فیلدها(InvoiceProperty)رو پر میکنم سی ار ام مبلغ نهایی رو محاسبه میکنه و این تبدیل به یک سیستم کنترلی برای کشف اشتباهات ممکن در فاکتورهای ثبت شده به صورت دستی یا خرید های وبسایتم شده، حالا از اونجایی که در کدهایی که تا الان فرمودید و بنا به مستندات آیتم هایی مثل TotalUnitPrice الزاما باید پر بشن ،من نمیتونم دیگه اون سیستم کنترلی رو داشته باشم چرا که انگار جلوی محاسبه ی سیستم رو میگیرم و خودم داده های نهایی رو به سیستم میدم، حالا میخوام بدونم امکانی وجود داره که من صرفا داده های اصلی از جمله قیمت واحد، تعداد و یا در مواردی تخفیف و همچنین InvoicePropertyها رو بدم و بذارم محاسبات رو خود سیستم انجام بده؟
2- در آخرین کد متوجه شدم که به تعداد ردیف های فاکتور باید آرایه detail بسازم ، من میخوام اینجوری پیاده ش کنم که در کدهام مثلا 10 آرایه بسازم که تا 10 ردیف رو شامل میشه، حالا ممکنه در یک فاکتور من 1 ردیف داشته باشم و در یک فاکتور دیگه 10 ردیف ، اینجوری سیستم بین 1 تا 10 ردیف آرایه رو داره ، امامیخوام بدونم چنانچه من 10 ردیف محصول رو در یک فاکتور نداشته باشم و به عنوان مثال فقط یک محصول فروخته باشم از اونجایی که من در کدهام تا 10 آرایه رو تعریف کردم سیستم ممکنه به خطا بخوره (بخاطر 9 آرایه ی خالی دیگه) یا نه در صورت خالی بودن محتوای آرایه ها اونها رو نادیده میگیره؟
امیدوارم توضیحات شفافی داده باشم .ممنون میشم اگر راهنمایی بفرمایید
@haghanigold
با سلام و احترام
متاسفانه در حال حاضر امکان مقداردهی count و totalunitprice از طریق اکسل و InvoiceProperty وجود ندارد. به زودی توسط تیم فنی مرتفع خواهد شد.
در خصوص مورد دوم هم اینکه مشکلی وجود ندارد.