Uluç Karadeniz

Toplu Malzeme / Malzeme Sınıfı Bağlantısı Atama / Güncelleme

  Tiger/Logo Object Designer (LOD)

Merhaba,

Malzeme / Malzeme Sınıf Bağlantısını oluşturabileceğimiz yada güncelleyebileceğimiz Object yada Object Designer içerisinde bir metot mevcut mu ?


Malzeme Sınıfı


Uluç Karadeniz
78
doItemClsAsgn
Malzeme Sınıfı Ataması

Şeklinde bir metot buldum dokümanlarda ancak kullanım örneği hiçbir yerde yok. Elinizde bu metoda ait kullanım örneği varsa, paylaşırsanız sevinirim.

Tiger tarafından alınabilecek bir XML'de bu işlemle ilgili bulamadım.


01/12/17 22:36


Sezgin ÖZDEMİR

Merhabalar,


Aşağıda bir malzeme kartı eklenip akabinde bu malzeme kartına sınıf bağlantısını yaptığımız kod örneği mevcuttur. Bu örnek üzerinden bir inceleme yapabilirsiniz.


 UnityObjects.UnityApplication UnityApp = new UnityObjects.UnityApplication();
 UnityApp.Login("LOGO", "", 1);
 UnityObjects.Data item = UnityApp.NewDataObject(UnityObjects.DataObjectType.doMaterial);
 item.New();
 item.DataFields.FieldByName("CARD_TYPE").Value = 1;
 item.DataFields.FieldByName("CODE").Value = "M-004";
 item.DataFields.FieldByName("NAME").Value = "";
 item.DataFields.FieldByName("GROUP_CODE").Value = "";
 item.DataFields.FieldByName("VAT").Value = 8;
 item.DataFields.FieldByName("UNITSET_CODE").Value = "05";
 item.DataFields.FieldByName("USEF_PURCHASING").Value = 1;
 item.DataFields.FieldByName("USEF_SALES").Value = 1;
 item.DataFields.FieldByName("DATE_CREATED").Value = "11.10.2017";
 item.DataFields.FieldByName("USEF_MM").Value = 1;
 item.DataFields.FieldByName("SELVAT").Value = 8;
 item.DataFields.FieldByName("RETURNVAT").Value = 8;
 item.DataFields.FieldByName("SELPRVAT").Value = 8;
 item.DataFields.FieldByName("RETURNPRVAT").Value = 8;
 item.DataFields.FieldByName("UPDATECHILDS").Value = 1;


 UnityObjects.Lines units_lines = item.DataFields.FieldByName("UNITS").Lines;
 units_lines.AppendLine();
 units_lines[units_lines.Count - 1].FieldByName("UNIT_CODE").Value = "ADET";
 units_lines[units_lines.Count - 1].FieldByName("USEF_MTRLCLASS").Value = 1;
 units_lines[units_lines.Count - 1].FieldByName("USEF_PURCHCLAS").Value = 1;
 units_lines[units_lines.Count - 1].FieldByName("USEF_SALESCLAS").Value = 1;
 units_lines[units_lines.Count - 1].FieldByName("CONV_FACT1").Value = 1;
 units_lines[units_lines.Count - 1].FieldByName("CONV_FACT2").Value = 1;

 UnityObjects.Lines dominant_classes_lines = item.DataFields.FieldByName("DOMINANT_CLASSES").Lines;

 dominant_classes_lines.AppendLine();
 dominant_classes_lines[dominant_classes_lines.Count - 1].FieldByName("DOM_TYPE").Value = 6;
 dominant_classes_lines[dominant_classes_lines.Count - 1].FieldByName("CLASS_CODE").Value = "000000000000000000000061";


 if (item.Post() == true)
 {

 MessageBox.Show("POST OK !");
 UnityObjects.Data mclastree = UnityApp.NewDataObject(UnityObjects.DataObjectType.doItemClsAsgn);

 mclastree.New();
 mclastree.DataFields.FieldByName("CLASS_CODE").Value = "000000000000000000000061";
 mclastree.DataFields.FieldByName("ITEM_CODE").Value = item.DataFields.FieldByName("CODE").Value.ToString();
 mclastree.Post();
 }
 else
 {
 if (item.ErrorCode != 0)
 {
 MessageBox.Show("DBError(" + item.ErrorCode.ToString() + ")-" + item.ErrorDesc + item.DBErrorDesc);
 }
 else if (item.ValidateErrors.Count > 0)
 {
 string result = "XML ErrorList:";
 for (int i = 0; i < item.ValidateErrors.Count; i++)
 {
 result += "(" + item.ValidateErrors[i].ID.ToString() + ") - " + item.ValidateErrors[i].Error;
 }
 MessageBox.Show(result);
 }
 }





04/12/17 08:24


Uluç Karadeniz

Sezgin Bey,

Yeni bir kart açma işlemi yok. Var olan malzeme kartına yeni bir atama işlemi yapacağız. Bunun için ilk olarak READ() ile okuma yapıp aşağıdaki koddaki gibi POST() yapıyorum. DB Hatası : -22 geriye dönüyor.  


objFire = Application.NewDataObject(0)
objFire.Read(intRef)

dominant_classes_lines = objFire.DataFields.FieldByName("DOMINANT_CLASSES").Lines

dominant_classes_lines.AppendLine()
dominant_classes_lines[0].FieldByName("DOM_TYPE").Value = 1
dominant_classes_lines[0].FieldByName("CLASS_CODE").Value = "MS004"


 If Not objFire.Post() Then 
 if (objFire.ValidateErrors.Count > 0) then 
 tmpErrStr = "XML Hatası mevcut!" 
 Cntr = objFire.ValidateErrors.Count 
 For ilp = 0 To (Cntr - 1) 
 vID = objFire.ValidateErrors.Item[ilp].ID 
 Str(vID, strvID) 
 tmpErrStr = tmpErrStr + strvID + " , " + objFire.ValidateErrors.Item[ilp].Error 
 Next ilp 
 warn(tmpErrStr) 
 Else 
 tmpErrStr="" 
 tmpErrStr = "DB Hatası mevcut!" 
 ErrId = objFire.ErrorCode 
 Str(ErrId, strErr) 
 ErrDef = "" 
 ErrDef = objFire.DBErrorDesc 
 tmpErrStr = tmpErrStr + "Hata Kodu : " + strErr + " " + ErrDef 
 warn(tmpErrStr) 
 End if
 Else
 warn("ok")
 end if




04/12/17 14:55


Uluç Karadeniz

Aşağıdaki kullanımda -22 hatası almaya devam ediyorum. POST sonrası kart üzerinde sınıf bağlantıları dediğim zaman istediğim bağlantı atanmış görünüyor ancak işaretli olması gereken sütunlar boş geliyor. Yani READ() işlemi sonrası DOMINANT_CLASSES eklemede sorun yaşıyoruz.


objFire = Application.NewDataObject(0)
objFire.Read(intRef)

dominant_classes_lines = objFire.DataFields.FieldByName("DOMINANT_CLASSES").Lines
dominant_classes_lines.AppendLine()
dominant_classes_lines[0].FieldByName("DOM_TYPE").Value = 1
dominant_classes_lines[0].FieldByName("CLASS_CODE").Value = "MS004"

 mclastree = Application.NewDataObject(78)

 mclastree.New()
 mclastree.DataFields.FieldByName("CLASS_CODE").Value = "MS004"
 mclastree.DataFields.FieldByName("ITEM_CODE").Value = codeE
 mclastree.Post()
 
 If Not objFire.Post() Then 
 if (objFire.ValidateErrors.Count > 0) then 
 tmpErrStr = "XML Hatası mevcut!" 
 Cntr = objFire.ValidateErrors.Count 
 For ilp = 0 To (Cntr - 1) 
 vID = objFire.ValidateErrors.Item[ilp].ID 
 Str(vID, strvID) 
 tmpErrStr = tmpErrStr + strvID + " , " + objFire.ValidateErrors.Item[ilp].Error 
 Next ilp 
 warn(tmpErrStr) 
 Else 
 tmpErrStr="" 
 tmpErrStr = "DB Hatası mevcut!" 
 ErrId = objFire.ErrorCode 
 Str(ErrId, strErr) 
 ErrDef = "" 
 ErrDef = objFire.DBErrorDesc 
 tmpErrStr = tmpErrStr + "Hata Kodu : " + strErr + " " + ErrDef 
 warn(tmpErrStr) 
 End if
 Else
warn("ok")
 end if




04/12/17 15:30


Sezgin ÖZDEMİR

Uluç Bey selamlar,


Aşağıdaki koddaki şekilde yeni bir malzeme kartı ile değil var olan bir kart üzerinden okuyarak işlemi denediğimde de bir sıkıntı yakalayamadım. 


 UnityObjects.UnityApplication UnityApp = new UnityObjects.UnityApplication();
 UnityApp.Login("LOGO", "", 1);
 UnityObjects.Data item = UnityApp.NewDataObject(UnityObjects.DataObjectType.doMaterial);
 item.Read(1344);
 

 UnityObjects.Lines dominant_classes_lines = item.DataFields.FieldByName("DOMINANT_CLASSES").Lines;
 dominant_classes_lines.AppendLine();
 dominant_classes_lines[0].FieldByName("DOM_TYPE").Value = 6;
 dominant_classes_lines[0].FieldByName("CLASS_CODE").Value = "000000000000000000000061";


 if (item.Post() == true)
 {
 MessageBox.Show("POST OK !");
 UnityObjects.Data mclastree = UnityApp.NewDataObject(UnityObjects.DataObjectType.doItemClsAsgn);

 mclastree.New();
 mclastree.DataFields.FieldByName("CLASS_CODE").Value = "000000000000000000000061";
 mclastree.DataFields.FieldByName("ITEM_CODE").Value = item.DataFields.FieldByName("CODE").Value.ToString();
 mclastree.Post();
 }
 else
 {
 if (item.ErrorCode != 0)
 {
 MessageBox.Show("DBError(" + item.ErrorCode.ToString() + ")-" + item.ErrorDesc + item.DBErrorDesc);
 }
 else if (item.ValidateErrors.Count > 0)
 {
 string result = "XML ErrorList:";
 for (int i = 0; i < item.ValidateErrors.Count; i++)
 {
 result += "(" + item.ValidateErrors[i].ID.ToString() + ") - " + item.ValidateErrors[i].Error;
 }
 MessageBox.Show(result);
 }
 }




05/12/17 10:57

Cevap vermek için giriş yapmanız gerekmektedir.