سلام و روز بخیر

سلام می خوام یه کپی از Invoice بگیرم ؛ فکر می کردم خیلی سخت نباشه اما الان میبینم که من باید به سه entity دسترسی داشته باشم یعنی به invoice, invoice product و product ها تا بتونم از یه فرم invoice کپی بگیرم؛ میشه راهنماییم کنید چطوری باید اینکارو بکنم.

با تشکر

سلام

برای کپی گرفتن از invoice با دستور where و inviceid نمی شد به product invoice ها دسترسی پیدا کرد؛ سایت msdn یک نمونه کد که به producti های opportunity دسترسی پیدا می کرد رو داشت که در آدرس زیر موجود است.

https://msdn.microsoft.com/en-us/library/gg509034.aspx

فکر می کنم این کد برای بازیابی اطلاعات invoice خوبه و بعد می شه یک invoice جدید ایجاد کرد و این اطلاعات بازیابی شده رو در اون قرار داد.

منتها در مسیر اجرای این فایل متوجه شدم که باید از کدهای داخل پوشه helper از sdk هم استفاده کنم.

فایلهای CrmServiceHelpers و DeviceIdManager رو با توجه به نیازی که داشت وارد کد نویسیم کردم و بدون مشکل build گرفته شد

البته من از قسمتی از کد سایت msdn استفاده کردم که داده های invoice رو retrive می کنه ؛ الان که میام این قسمت از کد رو اجرا کنم به error زیر بر می خورم.

کدی هم که با مراجعه به سایت msdn نوشتم به پیوست می باشد.

اگه ممکنه راهنمایی بفرمایید.

آیا این روشی که به کار گرفتم درسته؟

با تشکر

سلام

من کدی را تا آخر هفته می‌نویسم و همینجا میفرستم خدمتتون.

سلام

ممنونم ازتون

سلام

کدی که براتون نوشتم به این شکل هست:

 

private static void InvoiceCopy(IOrganizationService service, Guid IID)
{
   using (var crm = new XrmServiceContext(service))
   {
      var Invoice = crm.InvoiceSet.Where(c => c.Id == IID).First();

      Entity CopiedInvoice = new Entity("invoice");
      CopiedInvoice["name"] = Invoice.Name;
      CopiedInvoice["customerid"] = Invoice.CustomerId;
      CopiedInvoice["transactioncurrencyid"] = Invoice.TransactionCurrencyId;
      CopiedInvoice["pricelevelid"] = Invoice.PriceLevelId;
      CopiedInvoice["salesorderid"] = Invoice.SalesOrderId.Id;
      Guid CopiedInvoiceID = service.Create(CopiedInvoice);

      var InvoiceProducts = crm.InvoiceDetailSet.Where(c => c.InvoiceId.Id == Invoice.Id);

      foreach (var ip in InvoiceProducts)
      {
         Entity InvoiceDetail = new Entity("invoicedetail");
         InvoiceDetail["invoiceid"] = new EntityReference("invoice", Invoice.Id);
         InvoiceDetail["productid"] = ip.ProductId;
         InvoiceDetail["uomid"] = ip.UoMId;
         InvoiceDetail["ispriceoverridden"] = ip.IsPriceOverridden;
         InvoiceDetail["priceperunit"] = ip.PricePerUnit;
         InvoiceDetail["quantity"] = ip.Quantity;
         service.Create(InvoiceDetail);
      }
   }
}

با سلام

ممنونم از لطفتون

سلام

یک فیلد روی فرم ایجاد کردم و طبق فرمایش شما عمل کردم اما موقع اجرا به یک error بر می خورم که در شکل پیوست مشخص کردم.

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

با تشکر

سلام

با گذاشتن اون فیلد آیا یکبار داخل کد وارد می‌شود؟ یا بیش از یکبار؟ برای تست Break Point را در ابتدای متد قرار دهید.

من از این کد توی ورک فلوی
create
 استفاده کردم ولی
totalamount
و محصولاتی که انتخاب شده نال هست ؟

بعد از ایجاد محصولات اگر یک service.update روی invoice بزنید باید آپدیت بشه.