Regel zum Setzen einer Fracht aktualisiert das Frachtfeld erst bei eingabe eines Artikels
Michael Hubenschmid
Hallo zusammen,habe eine Customize Regel welche aufgrund definierter Parameter eine Frachtpauschale im Beleg erzeugt wenn ich den Kunden ausgewählt habe.
Diese funktzioniert auch bei den meisten Kunden einwandfrei. Nur bei einem Kunden setzt er zwar die Fracht in der Fracht Form zeigt sie mir im Beleg aber erst wenn ich einen Artikel hinzu erfasse. Woran kann das liegen. Das einzige was den Kunden von den anderen Kunden unterscheidet ist das er mehrer Frachtdefinitionen hat. Es wird aber auch nur eine automatisch per Customize befüllt. Hier mein Code
Extended Code:
// Setze Fracht
public bool SetFreight(COR_Utility.Logic.CustomizeEvent pVal, string freightFormType, string linkedButtonUID)
{
try
{
if( SwissAddonFramework.UI.Components.ComboBox.GetFromUID(pVal.Form, "121").Value != "6")
{
MessageBox.Show("Test Fracht auf 0 setzen", "OK");
SwissAddonFramework.UI.EventHandling.ItemEvents.FormLoadEventHandler del2 = null;
del2 = delegate (SwissAddonFramework.UI.EventHandling.ItemEvents.FormLoad ev)
{
SwissAddonFramework.UI.Components.Form.RemoveHandler(freightFormType, SwissAddonFramework.UI.Components.ModeComponent.FormModes.ALL, del2);
string val = "";
val = "0";
MessageBox.Show("Preis: " + val, "OK");
((SwissAddonFramework.UI.Components.Matrix)ev.Form.Items["3"]).SetValue("3", 0, "0.00");
((SwissAddonFramework.UI.Components.Matrix)ev.Form.Items["3"]).SetValue("3", 0, val);
((SwissAddonFramework.UI.Components.Button)ev.Form.Items["1"]).Click(SwissAddonFramework.UI.Components.Item.ClickType.Double);
};
SwissAddonFramework.UI.Components.Form.AddHandler_Load(freightFormType, SwissAddonFramework.UI.Components.ModeComponent.FormModes.ALL, del2);
SwissAddonFramework.UI.Components.LinkedButton.GetFromUID(pVal.Form, linkedButtonUID).Click(SwissAddonFramework.UI.Components.Item.ClickType.Regular);
return true;// Versandart ist nicht "Auto mit Anteil"
}
string cardCode = SwissAddonFramework.UI.Components.TextEdit.GetFromUID(pVal.Form, "4").Value;
string query1 = "";
string query2 = "";
if(!string.IsNullOrEmpty(cardCode))
{
query1 = "SELECT T2.U_Preis FROM OCRD T1 INNER JOIN [@IHB_BP_INCO] T2 ON T1.U_Vertr1=T2.Code WHERE T1.CardCode='" + cardCode + "'";
query2 = "SELECT T2.U_Preis FROM OCRD T1 INNER JOIN [@IHB_BP_VERTR2] T2 ON T1.U_Vertr2=T2.Code WHERE T1.CardCode='" + cardCode + "'";
}
else
{
string cardName = SwissAddonFramework.UI.Components.TextEdit.GetFromUID(pVal.Form, "54").Value;
if(!string.IsNullOrEmpty(cardName))
{
query1 = "SELECT T2.U_Preis FROM OCRD T1 INNER JOIN [@IHB_BP_INCO] T2 ON T1.U_Vertr1=T2.Code WHERE T1.CardName='" + cardName + "'";
query2 = "SELECT T2.U_Preis FROM OCRD T1 INNER JOIN [@IHB_BP_VERTR2] T2 ON T1.U_Vertr2=T2.Code WHERE T1.CardName='" + cardName + "'";
}
else
{
// FEHLER
SwissAddonFramework.Messaging.StatusBar.WriteWarning("Konnte keine Kundendaten lesen (kein CardCode & kein CardName)");
}
}
SwissAddonFramework.UI.EventHandling.ItemEvents.FormLoadEventHandler del = null;
del = delegate (SwissAddonFramework.UI.EventHandling.ItemEvents.FormLoad ev)
{
SwissAddonFramework.UI.Components.Form.RemoveHandler(freightFormType, SwissAddonFramework.UI.Components.ModeComponent.FormModes.ALL, del);
// WERT SETZEN
// Vertreter 1 (Vertriebscode 1 Incoterm)
using (System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().
ExecuteQuery(query1))
{
string val = "";
if (sdr.Read())
{
val = sdr["U_Preis"].ToString();
MessageBox.Show("Preis: " + val, "OK");
}
// wenn bei Vertreter 1 nichts steht -> VERTRETER 2 (Zustelltaxgebiet)
else
{
using (System.Data.SqlClient.SqlDataReader sdr2 = SwissAddonFramework.B1Connector.GetB1Connector().
ExecuteQuery(query2))
{
if (sdr2.Read())
{
val = sdr2["U_Preis"].ToString();
}
}
}
((SwissAddonFramework.UI.Components.Matrix)ev.Form.Items["3"]).SetValue("3", 0, "0.00");
((SwissAddonFramework.UI.Components.Matrix)ev.Form.Items["3"]).SetValue("3", 0, val);
}
((SwissAddonFramework.UI.Components.Button)ev.Form.Items["1"]).Click(SwissAddonFramework.UI.Components.Item.ClickType.Double);
};
SwissAddonFramework.UI.Components.Form.AddHandler_Load(freightFormType, SwissAddonFramework.UI.Components.ModeComponent.FormModes.ALL, del);
SwissAddonFramework.UI.Components.LinkedButton.GetFromUID(pVal.Form, linkedButtonUID).Click(SwissAddonFramework.UI.Components.Item.ClickType.Regular);
return true;
}
catch(System.Exception e)
{
return false;
}
}
Optimizer Code (reagiert auf Kundennummeränderung im Auftrag bei MODIFY im AfterEvent):
MessageBox.Show("Fracht bei Event CardCode", "OK");
string formType = "3007"; // Fracht Form
string itemUID = "91"; // LinkedButton
string freight = "";
freight = ComboBox.GetFromUID(pVal.Form, "121").Value;
MessageBox.Show("Fracht: " + freight, "OK");
SetFreight(pVal, formType, itemUID);
return true;
Bitte für jeden Tipp dankbar.
MFG
Michael Hubenschmid
0
Please sign in to leave a comment.
Comments
0 comments