public PanelKundenMaschine(ContainerControl parentCtrl, Kundenmaschine machine, bool keepLoaded = true) : base(parentCtrl, keepLoaded)
 {
     InitializeComponent();
     this.myParent  = parentCtrl as KundeMainView;
     this.myMachine = machine;
     this.InitializeData();
 }
 void dgvMaschine_RowEnter(object sender, DataGridViewCellEventArgs e)
 {
     if (dgvMaschine.Rows[e.RowIndex] != null)
     {
         selectedMachine = dgvMaschine.Rows[e.RowIndex].DataBoundItem as Kundenmaschine;
     }
 }
Beispiel #3
0
        public FileSearchView(Kundenmaschine machine, string searchFor)
        {
            InitializeComponent();
            this.myMachine      = machine;
            this.mySearchString = searchFor;

            this.InitializeData();
        }
        public Kundenmaschine CreateKundenmaschine(Kunde kunde, Maschinenmodell maschinenmodell, User creatingUser, string seriennummer)
        {
            // DataRows für die Maschine und KundeMaschineXref erstellen
            var machineCreationParams = DataManager.MachineDataService.NewKundenmaschineRows(kunde.CustomerId, maschinenmodell.UID, creatingUser.UID, seriennummer);
            var neueMaschine          = new Kundenmaschine(machineCreationParams.KundenMaschineRow);

            // Ereignis auslösen, dass über die Erstellung der neuen Kundenmaschine informiert.
            KundenmaschineCreatedEvent(this, new KundenmaschineCreatedEventArgs(neueMaschine));
            return(neueMaschine);
        }
Beispiel #5
0
        /// <summary>
        /// Transferiert die angegebene Maschine vom einen zum anderen Kunden.
        /// </summary>
        /// <param name="machine">Die zu transferierende Maschine.</param>
        /// <param name="quellKunde">Kundennummer des bisherigen Eigentümers.</param>
        /// <param name="zielKunde">Kundennummer des neuen Eigentümers.</param>
        public void TransferMachine(Kundenmaschine machine, Kunde quellKunde, Kunde zielKunde)
        {
            var currentUser = ModelManager.UserService.CurrentUser;

            DataManager.MachineDataService.MoveMachineRow(machine.UID, quellKunde.CustomerId, zielKunde.CustomerId, currentUser.UID);
            KundenmaschineMoved(this, new KundenmaschineMovedEventArgs(machine, quellKunde, zielKunde));
            if (ModelManager.SoftwareService.GetMachinesSoftware(machine).Count > 0)
            {
                ModelManager.SoftwareService.TransferSoftware(machine, zielKunde);
            }
        }
Beispiel #6
0
        public Maschinenauftrag AddMaschinenauftrag(Kundenmaschine kundenMaschine)
        {
            var mRow = DataManager.MachineDataService.CreateMaschinenauftragRow(kundenMaschine.UID);

            if (mRow != null)
            {
                var newAuftrag = new Maschinenauftrag(mRow);
                this.GetMaschinenauftragListe().Add(newAuftrag);
                return(newAuftrag);
            }
            return(null);
        }
Beispiel #7
0
        /// <summary>
        /// Transferiert die einer Kundenmaschine zugeordnete Software zu einem anderen Kunden.
        /// </summary>
        /// <param name="kundenmaschine"></param>
        /// <param name="zielKunde"></param>
        /// <remarks>
        /// Letztlich wird dabei lediglich das Feld Kundennummer in Tabelle
        /// cpm_kundensoftware aktualisiert. Feld KundenMaschinenId bleibt unverändert, da
        /// die Software derselben Maschine zugeordnet bleibt.
        /// </remarks>
        internal void TransferSoftware(Kundenmaschine kundenmaschine, Kunde zielKunde)
        {
            var list = this.GetMachinesSoftware(kundenmaschine);

            if (list == null || list.Count == 0)
            {
                return;
            }
            foreach (var software in list)
            {
                software.Kundennummer = zielKunde.CustomerId;
            }
            this.UpdateKundenSoftware();
        }
Beispiel #8
0
        public PanelMaschinendetail(ContainerControl parentCtrl, Kundenmaschine kundenmaschine, bool keepLoaded) : base(parentCtrl, keepLoaded)
        {
            InitializeComponent();
            this.myParent  = parentCtrl as KundeMainView;
            this.myMachine = kundenmaschine;

            this.dgvDateilinks.MouseDoubleClick += dgvDateilinks_MouseDoubleClick;
            this.dgvDateilinks.RowEnter         += dgvDateilinks_RowEnter;
            this.OnClosed    += pnlMaschinendetail_OnClosed;
            Application.Idle += Application_Idle;
            this.mtxtSerialNumber.Validated += MtxtSerialNumber_Validated;

            this.InitializeData();
        }
Beispiel #9
0
        //internal pnlMaschinendetail ShowMaschine(Kundenmaschine kundenmaschine)
        internal PanelKundenMaschine ShowMaschine(Kundenmaschine kundenmaschine)
        {
            //var detailPanel = new pnlMaschinendetail(this, kundenmaschine, true);
            var detailPanel = new PanelKundenMaschine(this, kundenmaschine);

            if (this.myActivePanel.KeepLoaded)
            {
                this.myPanelsBack.Push(this.myActivePanel);
            }
            this.myActivePanel.Swipe(false);
            detailPanel.Swipe(true);
            this.myActivePanel = detailPanel;
            this.ToggleCloseButton();
            return(detailPanel);
        }
Beispiel #10
0
        /// <summary>
        /// Erstellt eine neue Software für den angegebenen Kunden und optional die
        /// angegebene Kundenmaschine.
        /// </summary>
        /// <param name="kunde">Der Kunde, für den die neue Software erfasst wird.</param>
        /// <param name="kundenmaschine">
        /// Optional, die Kundenmaschine, der die neue Software zugeordnet werden soll.
        /// </param>
        /// <returns></returns>
        public Kundensoftware AddKundenSoftware(Kunde kunde, Kundenmaschine kundenmaschine = null)
        {
            string machinePK = "";

            if (kundenmaschine != null)
            {
                machinePK = kundenmaschine.UID;
            }
            var sRow = DataManager.SoftwareDataService.AddKundenSoftwareRow(kunde.CustomerId, machinePK);
            var sw   = new Kundensoftware(sRow, kunde, kundenmaschine);

            this.myKundensoftwareList.Add(sw);

            return(sw);
        }
Beispiel #11
0
        /// <summary>
        /// Gibt eine sortierbare Liste der Software für die angegebene Maschine zurück.
        /// </summary>
        /// <param name="machine">Die Maschine, der die Software zugeordnet ist.</param>
        /// <returns></returns>
        public SBList <Kundensoftware> GetMachinesSoftware(Kundenmaschine machine)
        {
            var list = new SBList <Kundensoftware>();

            foreach (dsSoftware.KundenSoftwareRow sRow in DataManager.SoftwareDataService.GetMachineSoftwareRows(machine.UID))
            {
                var sw = this.myKundensoftwareList.FirstOrDefault(s => s.UID == sRow.UID);
                if (sw == null)
                {
                    sw = new Kundensoftware(sRow, machine.CurrentOwner, machine);
                    this.myKundensoftwareList.Add(sw);
                }
                list.Add(sw);
            }
            return(list);
        }
Beispiel #12
0
        /// <summary>
        /// Löscht die angegebene KundenMaschine und alle zugehörigen Verknüpfungen in
        /// Tabelle KundenMaschineXref.
        /// </summary>
        /// <param name="kundenmaschine"></param>
        public void DeleteKundenMachine(Kundenmaschine kundenmaschine)
        {
            var appointmentList = ModelManager.AppointmentService.GetAppointmentList(kundenmaschine);
            var fileList        = ModelManager.FileLinkService.GetFileLinkList(kundenmaschine.UID);
            var notesList       = ModelManager.NotesService.GetNotesList(kundenmaschine.Key, kundenmaschine.LinkTypeId);
            var softwareList    = ModelManager.SoftwareService.GetMachinesSoftware(kundenmaschine);

            if (fileList == null && notesList.Count == 0 && appointmentList.Count == 0 && softwareList.Count == 0)
            {
                KundenmaschineDeleting(this, new KundenmaschineDeletingEventArgs(kundenmaschine));
                DataManager.MachineDataService.DeleteKundenMaschineRows(kundenmaschine.UID);
            }
            else
            {
                var msg = $"Die Maschine kann nicht gelöscht werden, weil es noch verknüpfte Dateien, Notizen oder Software gibt.";
                throw new OperationCanceledException(msg);
            }
        }
Beispiel #13
0
        void dgvMachines_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            var machine = dgvMachines.Rows[e.RowIndex].DataBoundItem as Kundenmaschine;

            if (machine != null)
            {
                this.mySelectedMachine = machine;

                var openText = string.Format("Öffnen ({0})", machine.Modellbezeichnung);
                this.mHtmlTip.SetToolTip(this.mbtnOpen, openText);
                this.mcmnuOpen.Text = openText;

                var openTerminText = string.Format("Servicetermine ({0})", machine.Modellbezeichnung);
                this.mcmnuServicetermine.Text = openTerminText;

                var moveText = string.Format("Verschieben ({0})", machine.Modellbezeichnung);
                this.mHtmlTip.SetToolTip(mbtnMove, moveText);
                this.mcmnuMove.Text = moveText;
            }
        }
Beispiel #14
0
        /// <summary>
        /// Prüft, ob der Dateipfad für die angegebene Kundenmaschine vorhanden und korrekt
        /// ist und erstellt ihn gegebenenfalls.
        /// </summary>
        /// <param name="kundenmaschine"></param>
        /// <returns></returns>
        public string CheckOrCreateMachinePath(Kundenmaschine kundenmaschine)
        {
            // zunächst den korrekten Maschinenpfad zusammenbauen
            var sn             = kundenmaschine.Seriennummer.Replace("/", "_").Replace("?", "-");
            var model          = kundenmaschine.Modellbezeichnung.Replace("/", "_").Replace(@"\", "_").Replace("?", "");
            var ownerName      = kundenmaschine.CurrentOwner.Matchcode.Replace("/", "_");
            var ordnerMaschine = $"{model}_{sn} ({ownerName})";
            var ordnerSerie    = kundenmaschine.Maschinenserie.Dateipfad;
            var ordnerKorrekt  = Path.Combine(ordnerSerie, ordnerMaschine);

            var ordnerInDB = kundenmaschine.Dateipfad;

            // Prüfen, ob es Abweichungen zwischen dem Dateipfad in der Datenbank und dem
            // korrekten Dateipfad gibt. Ist immer der Fall, wenn in der DB nichts
            // eingetragen ist oder es Unterschiede gibt.
            if (string.IsNullOrEmpty(ordnerInDB) || !ordnerKorrekt.Equals(ordnerInDB, StringComparison.CurrentCultureIgnoreCase))
            {
                // Wenn der in der DB eingetragene Ordner existiert, sämtliche enthaltene
                // Ordner, Unterordner samt Dateien in den korrekten neuen Ordner kopieren.
                try
                {
                    if (!Directory.Exists(ordnerKorrekt))
                    {
                        Directory.CreateDirectory(ordnerKorrekt);
                    }
                    if (Directory.Exists(ordnerInDB))
                    {
                        this.DirectoryCopy(ordnerInDB, ordnerKorrekt, true, true);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
            return(ordnerKorrekt);
        }
 /// <summary>
 /// Gibt den <seealso cref="Maschinenauftrag"/> für die angegebene
 /// <seealso cref="Kundenmaschine"/> zurück.
 /// </summary>
 /// <param name="kundenmaschine">
 /// Die <seealso cref="Kundenmaschine"/>, des gesuchten Maschinenauftrags.
 /// </param>
 /// .
 /// <returns></returns>
 public Maschinenauftrag GetMaschinenauftrag(Kundenmaschine kundenmaschine)
 {
     return(this.myAuftragsListe.FirstOrDefault(a => a.MaschinenId == kundenmaschine.UID));
 }
Beispiel #16
0
 public KundenmaschineMovedEventArgs(Kundenmaschine kundenmaschine, Kunde quellKunde, Kunde zielKunde)
 {
     this.MovedMachine = kundenmaschine;
     this.FromCustomer = quellKunde;
     this.ToCustomer   = zielKunde;
 }
Beispiel #17
0
 /// <summary>
 /// Erzeugt eine neue Instanz der <seealso cref="KundenmaschineDeletingEventArgs"/> Klasse.
 /// </summary>
 /// <param name="kundenmaschine">Die gelöschte <seealso cref="Kundenmaschine"/>.</param>
 public KundenmaschineDeletingEventArgs(Kundenmaschine kundenmaschine)
 {
     this.DeletedMachine = kundenmaschine;
 }
 /// <summary>
 /// Erzeugt eine neue Instanz der
 /// <seealso cref="KundenmaschineCreatedEventArgs"/> Klasse.
 /// </summary>
 /// <param name="kundenmaschine"></param>
 public KundenmaschineCreatedEventArgs(Kundenmaschine kundenmaschine)
 {
     this.CreatedMachine = kundenmaschine;
 }
Beispiel #19
0
 void ModelService_OnMachineDeleted(object sender, Model.EventSystem.MachineDeletedEventArgs e)
 {
     ClearDatabindings();
     myMachine = null;
 }
Beispiel #20
0
 public FileExplorerView(Kundenmaschine machine)
 {
     InitializeComponent();
     this.myMachine = machine;
     this.InitializeData();
 }
 void dgvWhatever_RowEnter(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
 {
     this.SelectedMachine = this.dgvWhatever.Rows[e.RowIndex].DataBoundItem as Kundenmaschine;
 }
Beispiel #22
0
        void mbtnSetAutoProperties_Click(object sender, EventArgs e)
        {
            Kunde          customer = null;
            Lieferant      supplier = null;
            Kundenkontakt  contact  = null;
            Kundenmaschine machine  = null;

            var msg         = string.Empty;
            var msgBoxTitle = "Ausfüllen der Termineigenschaften" + Environment.NewLine;
            var subject     = string.Empty;
            var location    = string.Empty;
            var body        = string.Empty;

            foreach (var lItem in ModelManager.AppointmentService.GetLinkedItemsList(this.myAppointment))
            {
                if (lItem is Kunde)
                {
                    customer = lItem as Kunde;
                }
                else if (lItem is Kundenkontakt)
                {
                    contact = lItem as Kundenkontakt;
                }
                else if (lItem is Kundenmaschine)
                {
                    machine = lItem as Kundenmaschine;
                }
                else if (lItem is Lieferant)
                {
                    supplier = lItem as Lieferant;
                }
            }

            if (customer == null && supplier == null)
            {
                msg = "Bitte vorher den Termin zumindest mit einem Kunden oder einem Lieferanten verknüpfen.";
                MetroMessageBox.Show(this, msg, msgBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            msg = "Ich trage die Eigenschaften dieses Termins automatisch ein.";
            if (MetroMessageBox.Show(this, msg, msgBoxTitle, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            switch (this.myAppointment.AppointmentType)
            {
            case "Kundenbesuch":
                if (customer != null)
                {
                    subject  = string.Format("{0}: Besuchstermin", customer.Matchcode);
                    location = string.Format("{0}, {1} {2}", customer.Street, customer.ZipCode, customer.City);
                    if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                    {
                        body = customer.GetCustomerInfoHtml(contact);
                    }
                    if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                    {
                        body += customer.GetNotesHtml();
                    }
                    if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                    {
                        body += customer.GetSpecialPriceListHtml();
                    }
                }
                break;

            case "Schulung":
                if (supplier != null)
                {
                    subject  = string.Format("{0}: Schulung", supplier.Matchcode);
                    location = string.Format("{0}, {1} {2}", supplier.Strasse, supplier.Postleitzahl, supplier.Ort);
                }
                break;

            case "Wartungstermin":
                if (machine != null)
                {
                    subject = string.Format("{0}: Wartung {1} ({2})", customer.Matchcode, machine.Modellbezeichnung, machine.Seriennummer);
                }
                else
                {
                    subject = string.Format("{0}: Wartung ", customer.Matchcode);
                }

                if (myCurrentUser.CalendarSettings.AddCustomerAddress)
                {
                    location = string.Format("{0}, {1} {2}", customer.Street, customer.ZipCode, customer.City);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Servicetermin":
                if (machine != null)
                {
                    subject = string.Format("{0}: Service {1} ({2})", customer.Matchcode, machine.Modellbezeichnung, machine.Seriennummer);
                }
                else
                {
                    subject = string.Format("{0}: Wartung ", customer.Matchcode);
                }

                if (myCurrentUser.CalendarSettings.AddCustomerAddress)
                {
                    location = string.Format("{0}, {1} {2}", customer.Street, customer.ZipCode, customer.City);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Fernwartung":
                subject  = string.Format("{0}: Fernwartung", customer.Matchcode);
                location = "Technik CPM";
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                break;

            case "Maschinenlieferung":
                if (machine != null)
                {
                    subject = string.Format("{0}: Auslieferung {1} ({2})", customer.Matchcode, machine.Modellbezeichnung, machine.Seriennummer);
                }
                else
                {
                    subject = string.Format("{0}: Auslieferung ", customer.Matchcode);
                }

                if (myCurrentUser.CalendarSettings.AddCustomerAddress)
                {
                    location = string.Format("{0}, {1} {2}", customer.Street, customer.ZipCode, customer.City);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Maschinenabholung":
                if (machine != null)
                {
                    subject = string.Format("{0}: Abholung {1} ({2})", customer.Matchcode, machine.Modellbezeichnung, machine.Seriennummer);
                }
                else
                {
                    subject = string.Format("{0}: Auslieferung ", customer.Matchcode);
                }
                location = "Technik CPM";
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Telefonat":
                subject  = string.Format("{0}: Telefonat", customer.Matchcode);
                location = "Technik CPM";
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Undefiniert":
                subject = string.Format("{0}: Undefinierter Termin", customer.Matchcode);
                if (myCurrentUser.CalendarSettings.AddCustomerAddress)
                {
                    location = string.Format("{0}, {1} {2}", customer.Street, customer.ZipCode, customer.City);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Demo":
                if (machine != null)
                {
                    subject = string.Format("{0}: Abholung {1} ({2})", customer.Matchcode, machine.Modellbezeichnung, machine.Seriennummer);
                }
                else
                {
                    subject = string.Format("{0}: Demo ", customer.Matchcode);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;

            case "Besprechung":
                subject  = "Besprechung";
                location = "Empfang CPM";
                body     = string.Format(@"<p><strong><u>Teilnehmer</u></strong></p><ul>{0}</ul>", myCurrentUser.CalendarSettings.TargetUser.NameFull);
                break;

            default:
                subject = string.Format("{0}: {1}", customer.Matchcode, myAppointment.AppointmentType);
                if (myCurrentUser.CalendarSettings.AddCustomerAddress)
                {
                    location = string.Format("{0}, {1} {2}", customer.Street, customer.ZipCode, customer.City);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerInfo)
                {
                    body = customer.GetCustomerInfoHtml(contact);
                }
                if (myCurrentUser.CalendarSettings.AddCustomerNotes)
                {
                    body += customer.GetNotesHtml();
                }
                if (myCurrentUser.CalendarSettings.AddCustomerPriceList)
                {
                    body += customer.GetSpecialPriceListHtml();
                }
                break;
            }
            this.myAppointment.Subject  = subject;
            this.myAppointment.Location = location;
            this.myAppointment.BodyHtml = body;

            this.RefreshDataBindings();
        }