|
|
مواضيع المطورين الأخرى مواضيع المطورين التي لا تنتمي الى أي من التصنيفات السابقة مثل لغة الديكستريتي (Dexterity) والأدوات التطويرية الأخرى (eConnect , Integration Maneger ,VS2005 for GP...etc.) |
| أدوات الموضوع | انواع عرض الموضوع |
28-Nov-2011, 09:59 PM | #21 |
مشرف منتدى المطورين | Sales Order Processing في هذا المثال سوف نحاول تكوين وثيقة XML تمثل SOP Transaction وهنا سوف نختار تكوين Invoice وكما هو معلوم ان مثل هذه الانواع من Transactions سوف تكون مكونه من جزئين الاول هو Header والثاني هو Details والذي سوف يمثل lines التي تخص Invoice وسوف نعمل على تكوين هذه الوثيقة برمجيا ثم نستخدم تقنية Sterilization لتكوين ملف وبعد ذلك سوف نحول هذا الملف الى وثيقة XML هذا هو الجزء الاول من المشروع. الجزء الثاني سوف نحاول ارسال وثيقة XML التي كونها برمجيا الى الجريت بلينز لتحديث قاعدة البيانات. هنا قبل البدء بالتنفيذ العملي انصح بالاطلاع على تركيب وثيقة SOP Transaction schema والتي سوف تكون متوفرة في ملفات Help الخاصة بeConnect وهي على درجة عالية من التعقيد لانها تحتوي على اجزاء عديدة ودرجة التعقيد سوف تكون معتمدة على Functionality التي تريد توفيرها من خلال XML على سبيل المثال سوف تكون هناك اجزاء خاصة ب Commissions و Distributions و Markdown amounts الى اخره من التفاصيل المتعلقة بعملية SOP . سوف نبداء مشروع .NET جديد ويجب ان تضيف Reference المطلوبة لهذا المشروع وهي كما يلي: كود: Microsoft.Dynamics.GP.eConnect.dll Microsoft.Dynamics.GP.eConnect.MiscRoutines.dll Microsoft.Dynamics.GP.eConnect.Serialization.dll System Enterprise Services.dll __________________ GP Techno-Functional Consultant |
28-Nov-2011, 10:00 PM | #22 |
مشرف منتدى المطورين | ثم بعد ذلك سوف نضيف Module الى المشروع وسوف نعرف فيها اجراء عام اسمه SerializeSOPObject سوف نوضح من خلاله كيفية استخدام المكتبة Microsoft.Dynamics.GP.eConnect.Serialization.dll للقيام بعملية تكوين eConnect XML بشكل برمجي في البداية سوف نضمن فضاءات الاسماء المطلوبة. كود: Imports System Imports System.Xml Imports System.Xml.Serialization 'Required to convert Seriailaizaion Object to XML and vis versa Imports System.IO Imports System.Text Imports Microsoft.VisualBasic Imports Microsoft.Dynamics.GP.eConnect Imports Microsoft.Dynamics.GP.eConnect.Serialization __________________ GP Techno-Functional Consultant |
28-Nov-2011, 10:04 PM | #23 |
مشرف منتدى المطورين | ثم بعد ذلك نعرف الاجراء العام SerializeSOPObject والذي يمتلك بارامتر واحد فقط يستخدم في عملية امرار اسم الملف الذي سوف نخزن XML فيه على القرص الصلب. ثم بعد ذلك سوف نعرف عدد من المتغيرات كما هو واضح في الصورة المرفقة المتغير الاول هو SOPInvoice وهو من نوع SOPTypeTransaction والذي سوف نستخدمه لتكوين Rootلوثيقة XML وسوف يمثل Parent Node وهذا الكائن يمتلك خاصية taSopLineIvcInsert_Items وهي عبارة عن مصفوفة من الكائنات من النوع taSopLineIvcInsert_ItemsTaSopLineIvcInsert والتي تمثل lines ضمن Invoice لذا نعرف متغيري كائن من النوع taSopLineIvcInsert_ItemsTaSopLineIvcInsert الاول يمثل line الاول في Invoice وهو SOPLine1 والمتغير الثاني SOPLine2 والذي يمثل line الثاني في Invoice ثم بعد ذلك نعرف كائن ٍSOPHdr من نوع taSOPHdrIveInsert والذي سوف يمثل Header لل Invoice وسوف نمرر هذا الكائن الى الخاصية taSOPHdrIveInsert التي تعود للكائن SOPInvoice والذي هو من النوع SOPTypeTransaction . بعد نعرف مصفوفة array من النوع taSopLineIvcInsert_ItemsTaSopLineIvcInsert وبحجم 2 اي تمتلك عنصرين وعناصر هذه المصفوفة lineItemArray هي كائنات من النوع taSopLineIvcInsert_ItemsTaSopLineIvcInsert كود: Dim SOPInvoice As New SOPTransactionType Dim SOPLine1 As New taSopLineIvcInsert_ItemsTaSopLineIvcInsert Dim SOPLine2 As New taSopLineIvcInsert_ItemsTaSopLineIvcInsert Dim SOPHdr As New taSopHdrIvcInsert Dim lineItemArray(1) As taSopLineIvcInsert_ItemsTaSopLineIvcInsert __________________ GP Techno-Functional Consultant آخر تعديل بواسطة humam ، 28-Nov-2007 الساعة 10:53 PM. |
28-Nov-2011, 10:10 PM | #24 |
مشرف منتدى المطورين | الخطوة التالية هي بداية حلقة من نوع Try-End Try لتنفيذ الشفرة المطلوبة مع وضع امكانيات لمعرفة Exceptions عند حدوثها اولا سوف نبدأ بأعداد الكائن SOPLine1 بأمرار القيم التي تمثل Line وهنا يجب امرار كل Required Fields التي يحتاجها تكوين line ويمكن معرفة هذه الحقول عن طريق مراجعة ملفات help وبعد اكمال اعدادات هذا الكائن نمرره الى المصفوفة lineItemArray وهكذا سوف نعمل على اعداد الكائن SOPLine2 وامراره الى المصفوفة lineItemArray . بعد ذلك سوف نمرر المصفوفة lineItemArray الى الخاصية taSopLineIvcInsert_Items العائدة للكائن SOPInvoice لكن قبل ذلك يجب اعداد الخاصية عن طريق تحديد حجم المصفوفة وهذا ما تقوم به عبارة ReDim كود: Try 'Create Line XML Node 'Create element of first Line in the Invoice With SOPLine1 .ADDRESS1 = "Zyenoa 22/160" .CITY = "Baghdad" .COUNTRY = "Iraq" .CUSTNMBR = "Humam" .SOPNUMBE = "INV1" .SOPTYPE = 3 .DOCID = "STDINV" .QUANTITY = 2 .ITEMNMBR = "ACCS-CRD-12Wh" .ITEMDESC = "Phone Cord – 12’ White" .UNITPRCE = 10.95 .XTNDPRCE = 21.9 .LOCNCODE = "WAREHOUSE" .DOCDATE = DateString End With 'Add first line to array lineItemArray(0) = SOPLine1 'Create element of second Line in the Invoice With SOPLine2 .ADDRESS1 = "Zyenoa 22/160" .CITY = "Baghdad" .COUNTRY = "Iraq" .CUSTNMBR = "Humam" .SOPNUMBE = "INV1" .SOPTYPE = 3 .DOCID = "STDINV" .QUANTITY = 2 .ITEMNMBR = "ACCS-CRD-25BK" .ITEMDESC = "Phone Cord – 25’ Black" .UNITPRCE = 15.95 .XTNDPRCE = 31.9 .LOCNCODE = "WAREHOUSE" .DOCDATE = DateString End With 'Add second line to array lineItemArray(1) = SOPLine2 'chaneg size of array in SOPInvoice and pass lineItemArray as lines 'Add Line Node to Transaction Type ReDim Preserve SOPInvoice.taSopLineIvcInsert_Items(1) SOPInvoice.taSopLineIvcInsert_Items = lineItemArray __________________ GP Techno-Functional Consultant |
28-Nov-2011, 10:12 PM | #25 |
مشرف منتدى المطورين | بعد ذلك نعمل على اعداد الكائن ٍSOPHdr وهنا يجب امرار كل Required Fields التي يحتاجها تكوين Header ويمكن معرفة هذه الحقول عن طريق مراجعة ملفات help ثم بعد ذلك نمرر الكائن الى الخاصية taSopLineIvcInsert_Items التي تعود للكائن SOPInvoice وبنهاية هذه الخطوة نكون قد كونا Nodes التالية : اولا. Transaction Type Node وهي تمثل Parent Node ويمثلها الكائن SOPInvoice ثانيا. كونا ثلاثة عقد 3 Nodes واحدة تمثل Header واثنتان تمثلان Lines ممثلة بالكائنات SOPHdr و SOPLine1 و SOPLine2 وهذه Nodes تعتبر ابناء Childs للParent Node وبتالي نكون قد اتبعنا التسلسل الصحيح لتركيب eConnect Nodes . كود: 'Header XML Node 'Create Invoice Header With SOPHdr .SOPTYPE = 3 .SOPNUMBE = "INV1" .DOCID = "STDINV" .BACHNUMB = "Test" .LOCNCODE = "WAREHOUSE" .DOCDATE = DateString .CUSTNMBR = "HUMAM" .CUSTNAME = "HUMAM" .ShipToName = "WAREHOUSE" .ADDRESS1 = "Zyenoa 22/160" .CITY = "Baghdad" .COUNTRY = "Iraq" .CNTCPRSN = "Humam" .FAXNUMBR = "13125550150" .ZIPCODE = "65700" .SUBTOTAL = 53.8 .DOCAMNT = 53.8 .USINGHEADERLEVELTAXES = 0 .PYMTRMID = "Net 30" End With 'Add Header Node to Transaction Type SOPInvoice.taSopHdrIvcInsert = SOPHdr __________________ GP Techno-Functional Consultant |
28-Nov-2011, 10:15 PM | #26 |
مشرف منتدى المطورين | الان سوف نحتاج الى الخطوة الاخيرة وهي عملية تكوين XML Document حيث قمنا بتعريف كائن eConnect وهو من النوع eConnect Type والذي سوف يمثل eConnect XML Document وهذا الكائن يمتلك خاصية SOPTypeTransaction وهي تستقبل مصفوفة من الكائنات من النوع SOPTypeTransaction اي يمكن ارسال اكثر من Invoice واحدة من خلال نفس XML Document وهنا كل Invoice سوف تكون ممثلة بكائن من نوع SOPTypeTransaction وبما ان هذه الخاصية هي من نوع array لذا يجب اعداد حجم المصفوفة قبل استخدامها عن طريق العبارة ReDim ثم بعد ذلك نمرر الكائن SOPInvoice لها وبهذا تنتهي عملية انشاء eConnect XML Document . كود: Dim eConnect As New eConnectType ReDim Preserve eConnect.SOPTransactionType(0) eConnect.SOPTransactionType(0) = SOPInvoice __________________ GP Techno-Functional Consultant آخر تعديل بواسطة humam ، 28-Nov-2007 الساعة 11:04 PM. |
28-Nov-2011, 10:20 PM | #27 |
مشرف منتدى المطورين | عملية Serialization وهنا سوف نعمل على تحويل الكائن eConnect الذي يمثل وثيقة eConnect XML الى ملف على القرص الصلب وبتالي يمكن استدعاء هذا الكائن من قبل الشفرات البرمجية الاخرى. وهنا سفو تبدأ العملية عن طريق تعريف ملف من نوع FileStream وهنا سوف نمرر اسم الملف الذي يمثل بارامتر الاجراء الذي نعمل عليه وهو filename وكذلك نحدد العملية المطلوبة وهي تكوين ملف ثم بعد ذلك سوف نحتاج الى تحديد نوع writer الذي سوف يستخدم في كتابة الملف وهنا استخدمنا XMLWriter والذي سوف يأخذ معاملين هما اسم الملف ومعرف الشفرة المستخدمة لكتابة الملف. بعد ذلك سوف نعرف كائن من نوع XMLSerializer والذي يعمل على تحويل الكائن الذي تم امرار نوعه اليه اثناء انشاء الكائن وهذا ما تقوم به عبارة Get Type التي تعيد فئة الكائن يقوم بتحويل هذا الكائن الى ملف عن طريق الطريقة Serialize التابعة لهذا الكائن والتي تأخذ معاملين الاول يمثل كائن من نوع Writer الذي سوف يستخدم لكتابة الكائن والمعامل الثاني هو الكائن نفسه المراد كتابته وهو في هذه الحالة eConnect والذي يمثل eConnect XML ثم في اخر خطة نقوم بأغلاق writer وبهذا ينتهي الاجراء SerializeSOPObject الذي استخدم لتكوين ملف XML برمجيا ثم تحويله الى ملف XML عادي . كود: 'Start Serialization Dim sopFileStream As New FileStream(fileName, FileMode.Create) Dim XMLwriter As New XmlTextWriter(sopFileStream, New UTF8Encoding) 'Serialize using the XmlTextWriter to the file Dim MySerializer As New XmlSerializer(GetType(eConnectType)) MySerializer.Serialize(XMLwriter, eConnect) XMLwriter.Close() Catch ex As Exception MsgBox("System error:" + ex.Message) End Try __________________ GP Techno-Functional Consultant |
28-Nov-2011, 10:22 PM | #28 |
مشرف منتدى المطورين | شفرة الزر Submit هنا ان الشفرة لاتختلف كثيرا الشفرة التي اوردناها في المثال الاول لذا لن اتوسع في شرحها سوف ابين فقط نقطة الاختلاف عن الشفرة السابقة حيث ان هذه الشفرة سوف ترتكزعلى استخدام الطريقة eConnect_EntryPoint والتي تستخدم الى ارسال الوثائق الى الجريت بلينز وكما نعلم ان هذه الطريقة سوف تحتاج الى برامتر من نوع XML Document في الشفرة السابقة قمنا بأدخال الكائن بشكل يدوي عبر كائن النص ثم امراره الى الطريقة هنا سوف نستدعي الاجراء الذي صممناه SerializeSOPObject لتكوين وثيقة XML برمجيا ثم تحويلها الى ملف ومن ثم نقراء وثيقة XML من هذا الملف بدل القراءة من مربع النص اما مربع النص الموجود هنا فهو فقط لاظهار تاثير مرئي للمستخدم لملاحظة وثيقة XML التي سوف يتم ارسالها ويمكن نسخ هذه الوثية وتنسيقها بشكل جيد ضمن اطار العمل .NET وبهذا ينتهي المثال الخاص بالمكتبة Serialization كود: Dim SOPInvoiceDocument As String Dim ConnectionString As String 'Add referance to System.EnterpriseServices Dim eConnectObject As New eConnectMethods Dim Result As Boolean Dim xmldoc As New Xml.XmlDocument Try 'Call the SerializeSOPObject subroutine and specify 'a file name Create eConnect XML Document SerializeSOPObject("SOPInvoice.xml") 'Create an XML document object and load it with the XML from the 'file that the SerializeSOPObject subroutine created xmldoc.Load("SOPInvoice.xml") 'Convert the XML to a string SOPInvoiceDocument = xmldoc.OuterXml XML.Text = xmldoc.OuterXml XML.ScrollBars = ScrollBars.Both 'Set the connection string 'This connection string uses integrated security to connect to the 'TWO database on the local computer ConnectionString = "Data Source=ISYS-MYNET\GP10;Integrated Security=SSPI;" _ & "Persist Security Info=False;Initial Catalog=TWO;" 'Send XML document to GP Result = eConnectObject.eConnect_EntryPoint(ConnectionString, EnumTypes.ConnectionStringType.SqlClient, _ SOPInvoiceDocument, EnumTypes.SchemaValidationType.None) Catch ex As eConnectException MsgBox(" XML error " + ex.Message) Catch ex As SystemException MsgBox("Error:" + ex.Message) End Try __________________ GP Techno-Functional Consultant |
29-Nov-2011, 06:31 AM | #29 |
مدير عام منتديات جريت بلينز العربية | جهد رائع أخي الحبيب ... زادك الله علما ومعرفة... أخي هل هذه الأمثلة تنطبق على الـ E-Connect 10 علما بأن الـ Schema الخاصة بشاشة الـ SOP ما اختلفت .... لكن سؤالي عن التعامل مع الكود. __________________ Monzer Osama Saudia Arabia - Jeddah 00966501826235 Microsoft Certified Business Management Solutions Professional Microsoft Certified Trainer |
30-Nov-2011, 10:22 PM | #30 |
مشرف منتدى المطورين | والله اخي العزيز انا طبقت هذه الامثلة على GP10 لكن من ناحية Code انها لاتختلف بين GP10 وGP9 واذا كان من اختلاف يحدث فهو في Schema اي اذا غيرت المايكروسوفت تركيب SOP في GP10 عنه في GP9 عند ذلك سوف تحتاج الى تعديل الشفرة وشكرا __________________ GP Techno-Functional Consultant |
يتصفح الموضوع حالياً : 1 (0 عضو و 1 ضيف) | |
أدوات الموضوع | |
انواع عرض الموضوع | |
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
تعلم كيفية كتابة الشفرة البرمجية بلغة الدكسترتي | humam | مواضيع المطورين الأخرى | 30 | 25-May-2013 04:45 PM |
فكرة عمل مشاريع | wael abed | منتدى أكواد فيجوال بيسك VBA | 9 | 07-Oct-2012 09:08 AM |
كيف تستخدم الماكرو و Scheduled Tasks لتنفيذ مهام مجدولة على GP | humam | مواضيع المطورين الأخرى | 25 | 15-Dec-2011 06:00 PM |
كيفية تعلم جريت بلينز | نادر احمد ماهر | حزمة التشغيل (جزيئ المبيعات - المشتريات - المستودعات ) | 1 | 23-Oct-2011 01:08 PM |
مثال عن استخدام الـ Econnect (للمبتدئين) | Monzer Osama | مواضيع المطورين الأخرى | 1 | 23-Jun-2011 10:27 PM |