مدونة منذر اسامة

العودة   منتديات جريت بلينز العربية Great Plains For Arab > منتدى مطوري جريت بلينز > مواضيع المطورين الأخرى

مواضيع المطورين الأخرى مواضيع المطورين التي لا تنتمي الى أي من التصنيفات السابقة
مثل لغة الديكستريتي (Dexterity) والأدوات التطويرية الأخرى (eConnect , Integration Maneger ,VS2005 for GP...etc.)

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 28-Nov-2011, 10:59 PM   #21
humam
مشرف منتدى المطورين
افتراضي

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
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:00 PM   #22
humam
مشرف منتدى المطورين
افتراضي

ثم بعد ذلك سوف نضيف 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
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:04 PM   #23
humam
مشرف منتدى المطورين
افتراضي

ثم بعد ذلك نعرف الاجراء العام 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 الساعة 11:53 PM.
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:10 PM   #24
humam
مشرف منتدى المطورين
افتراضي

الخطوة التالية هي بداية حلقة من نوع 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
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:12 PM   #25
humam
مشرف منتدى المطورين
افتراضي

بعد ذلك نعمل على اعداد الكائن ٍ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
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:15 PM   #26
humam
مشرف منتدى المطورين
افتراضي

الان سوف نحتاج الى الخطوة الاخيرة وهي عملية تكوين 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 ، 29-Nov-2007 الساعة 12:04 AM.
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:20 PM   #27
humam
مشرف منتدى المطورين
افتراضي

عملية 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
humam غير متواجد حالياً   رد مع اقتباس
قديم 28-Nov-2011, 11:22 PM   #28
humam
مشرف منتدى المطورين
افتراضي

شفرة الزر 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
humam غير متواجد حالياً   رد مع اقتباس
قديم 29-Nov-2011, 07:31 AM   #29
Monzer Osama
مدير عام منتديات جريت بلينز العربية
افتراضي

جهد رائع أخي الحبيب ... زادك الله علما ومعرفة...
أخي هل هذه الأمثلة تنطبق على الـ E-Connect 10 علما بأن الـ Schema الخاصة بشاشة الـ SOP ما اختلفت .... لكن سؤالي عن التعامل مع الكود.
__________________
Monzer Osama
Saudia Arabia - Jeddah
00966501826235
Microsoft Certified Business Management Solutions Professional
Microsoft Certified Trainer
Monzer Osama غير متواجد حالياً   رد مع اقتباس
قديم 30-Nov-2011, 11:22 PM   #30
humam
مشرف منتدى المطورين
افتراضي

والله اخي العزيز انا طبقت هذه الامثلة على GP10 لكن من ناحية Code انها لاتختلف بين GP10 وGP9 واذا كان من اختلاف يحدث فهو في Schema اي اذا غيرت المايكروسوفت تركيب SOP في GP10 عنه في GP9 عند ذلك سوف تحتاج الى تعديل الشفرة وشكرا
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
إضافة رد


يتصفح الموضوع حالياً : 1 (0 عضو و 1 ضيف)
 
أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
تعلم كيفية كتابة الشفرة البرمجية بلغة الدكسترتي 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 07:00 PM
كيفية تعلم جريت بلينز نادر احمد ماهر حزمة التشغيل (جزيئ المبيعات - المشتريات - المستودعات ) 1 23-Oct-2011 01:08 PM
مثال عن استخدام الـ Econnect (للمبتدئين) Monzer Osama مواضيع المطورين الأخرى 1 23-Jun-2011 10:27 PM


جميع الأوقات بتوقيت GMT +3. الساعة الآن 07:11 AM.


Powered by vBulletin® Version 3.8.3

الموقع والمنتدى من تطوير » شركة المنذر للاستضافة والتصميم

Copyright © 2000-2010 Jelsoft Enterprises Limited.
الموقع لا يمثل أي جهة رسمية بل هو جهد شخصي يرمي الى تجميع القدرات في برنامج جريت بلينز