Duplizieren eines Beleges mit mehreren GPs
Patrick Wiemann
Hallo zusammen,ich habe mal wieder ein (vielleicht) kniffliges Problem! Ich möchte zum Bleistift im Kundenauftrag einen Button anglegen der mir den Kundenauftrag dupliziert. Also im Prinziep nichts anderes als die normale Duplizieren-Funktion von Business One. Nun möchte ich den Beleg aber nicht einfach duplizieren sonder zwei-,drei- oder vierfach aber halt mit verschiedenen Geschäftspartnern und das mittels Klick auf diese Schaltfläche.
Ich versuche mich gerade erstmal langsam der Lösung zu nähern und habe mal folgenden Code hinter einen Function-Button gelegt:
try{
string DocNum = "";
DocNum = TextEdit.GetFromUID(pVal.Form,"8").Value;
for(int i=1;i<=2;i++)
{
if(i==2)
{
Form.OpenFormByKey("17",DocNum);
}
MenuItem.GetFromUID("1287").Activate();
TextEdit.GetFromUID(pVal.Form,"4").Value = "C20000";
}
}
catch(System.Exception)
{
MessageBox.Show("Fehler", "OK");
}
Ich öffne einen Kundenauftrag und klicke auf meinen angelegt "Duplizieren"-Button. Daraufhin wird der Beleg dupliziert.
Da ich im duplizierten und noch nicht hinzugefügten Beleg nun aber keine
Duplizieren-Funktion aktivieren kann, lasse ich den Kundenauftrag vom Anfang öffnen und dupliziere den Beleg nocheinmal. Problem hierbei ist nur
das der GP-Code beim zweiten duplizierten Beleg nicht gefüllt wird. Dafür wird der GP-Code beim ersten duplizierten Beleg geändert.
Ich habe das Gefühl ich bin da heavy on the wood way.
Wenn der obige Code erst mal das tut was ich mir so vorstelle hätte ich gerne eine Auswahlliste mit den Geschäftspartner, aus der ich dann auswählen kann für welche GPs der Beleg dupliziert werden soll.
Die definition des Function Buttons habe ich als JPEG angehängt.
Ich hoffe ich habe mich verständlich ausgedrückt was ich mir da so vorstelle. Ich bin der Meinung diese Anforderung sollte eigentlich umsatzbar sein nur weiß ich noch nicht ganz wie?!
Wenn jemand so etwas schon mal gemacht hat bin ich für jede Anregung oder Code-Beispiele dankbar!
Gruß,
Patrick
Manuel Marhold
Hi Patrick,du arbeitest also im flaschen Form
ersetzte das pval.Form mal durch Form.GetFromUID(SwissAddOnFramework.GetCompany().Forms.ActiveForm.UID)
das SwissAddOnFramework.GetCompany() musste du noch passend machen, weiss nicht genau, wie der Befehl dafür ist.
Da es kein ActiveForm in coresuite gibt, musst du die die UID der ActiveForm aus dem SAP Company-Object holen und darüber die coresuite-Form hohlen.
Patrick Wiemann
Hallo zusammen,für alle, die es interessiert hier mal ein Zwischenergebnis:
string temp;
string DocNum;
try{
DocNum = TextEdit.GetFromUID(pVal.Form,"8").Value;
for(int i=1;i<=2;i++)
{
if(i>1)
{
Form.OpenFormByKey("17",DocNum);
}
MenuItem.GetFromUID("1287").Activate();
temp = SwissAddonFramework.B1Connector.GetB1Connector().Application.Forms.ActiveForm.UniqueID;
TextEdit.GetFromUID(Form.GetFormFromUID(temp),"4").Value = "C20000";
}
}
catch(System.Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "OK");
}
Dieser Code dupliziert einen Kundenauftrag zweimal und setzt den Kunden "C20000" als GP ein.
Jetzt brauch ich nur noch eine Lösung, wie ich das ganze dynamischer hinbekomme.
Ich möchte bevor der Beleg dupliziert wird noch auswählen können für welche und für wieviele GPs ich den Beleg duplizieren möchte. Mein erster Ansatz wäre da ein Selection Grid. Ich fürchte nur das wird gar nicht so einfach. Vielleicht hat ja jemand noch eine bessere Idee?
Gruß,
Patrick
Manuel Marhold
Hi Patrick,das sieht gut aus.. :D
wie wäre es für die Auswahl der GP mit einer ChooseFromList? Das ist ja das Standardinstrument von SAP für eine Auswahl.
Ich würde mir evtl. ein neues Formular erstellen (nicht sichtbar oder außerhalb des Bildschirmbereiches) und dort eine ChooseFromList hinterlegen und diese dann abfragen. Ich weiss nicht, ob das evtl. auch ohne Forumlar geht, müsstest du mal selber schauen.
0
Please sign in to leave a comment.
Comments
0 comments