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.
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);
}
}
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
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
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);
}
}
Cevap vermek için giriş yapmanız gerekmektedir.
Soru sormak için lütfen oturum açınız.
Toplu Malzeme / Malzeme Sınıfı Bağlantısı Atama / Güncelleme
01/12/17 21:36   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ı