Pliki cookie pomagają nam udostępniać nasze usługi. Korzystając z tych usług, zgadzasz się na użycie plików cookie. Więcej informacji
CRM - Extensions. Baza adresowa CDN OPTIMA

2011-11-17

Import kontrahentów z innych systemów został opisany w dokumentach

Kontynuacją rozszerzeń opisanych w dokumencie CRM - Extensions. Bezpośrednia obsługa CDN OPTIMA jest kolejne rozszerzenie, które umożliwia na pracę on-line z zewnętrzną bazą danych kontrahentów. Również w tym dokumencie opiszemy i udostępniamy klasę dla CDN OPTIMA.

Standardowo w sekcji Kontakty/Baza adresowa użytkownicy Sz@rk otrzymują dodatkową bazę kontaktów.Opcja ta zostaje zastąpiona dzięki bibliotece TGSoft.Data.Extensions.dll i własnej implementacji klasy Adresy.

Tabela Kontrahenci z bazy CDN Optima (praca on-line).

Na powyższym zdjęciu widać tabelę z systemu CDN Optima, która została bezpośrednio odczytana za pomocą serwisów Sz@rk Server. W trybie On-Line można dane przeglądać i edytować (w tym dodawać i kasować rekordy).

Wewnętrznie Sz@rk CRM posługuje się własną tabelą kontrahentów do zakładania "Spraw", "Zdarzeń" , "Zadań", itp. Potrzebne jest to ze względu na referencje pomiędzy tabelami. W połączeniu z zewnętrznym systemem, nasza tabela obsługiwana jest automatycznie "w tle". Jeżeli z listy kontrahentów OPTIMA wybierzemy przycisk "e-mail", program sprawdza czy taki kontakt jest już założony w bazie Sz@rk, brakujące kontakty zostaną automatycznie dodane bez ingerencji użytkownika. Podobnie jest w oknie "Szczegóły faktury", wybierając opcję e-mail, Zasoby, Zadania, Zdarzenia.

W głównym oknie kontaktów OPTIMA jest sekcja "Dane w Sz@rk" i informacja o połączeniu bieżącego rekordu z danymi kontrahentów Sz@rk. "Kolumna "Akt?" informuje o konieczności aktualizacji danych dla kontaktu już połączonego.

Do hurtowej aktualizacji i dodawaniu nowych kontaktów służy opcja "Aktualizacja".

Poniżej pełny kod klasy, która zmienia funkcjonalność programu i umożliwia na bezpośrednią współpracę z danymi programu CDN OPTIMA, również w trybie On-line za pomocą serwisów. Proszę zwrócić uwagę, że program umożliwia edycję danych kontrahentów z zewnętrznego systemu oraz zakładanie nowych kontrahentów. Wszystko to realizują klasy Sz@rk API, z których użytkownik może bezpośrednio skorzystać.

using System;
using System.Data;
using TGSoft.Repository;
 
namespace TGSoft.Data.Extensions
{
    public class Adresy : TGSoft.Data.Szark.Adresy
    {
        public const string DataBase = "Optima";
 
        protected override DADataTable GetTableAdresy()
        {
            var dt = new DADataTable(Services.Tables.CDN_BazaAdresowa, "", null)
                { AutoUpdateOnPost = true, ReducedDelta = true, TableName = "CDN.Kontrahenci" };
            dt.AfterInsert += dt_AfterInsert;
            return dt;
        }
 
        public override DADataTableRecord GetRecordAdresy(object id)
        {
            return new DADataTableRecord(Services.Tables.CDN_BazaAdresowaRekord, id)
                { PrimaryKey = "Knt_KntId", ReducedDelta = true };
        }
 
        void dt_AfterInsert(object sender, DADataTableEventArgs e)
        {
            foreach (DataColumn col in e.Row.Table.Columns)
            {
                if (!col.AllowDBNull)
                {
                    string fn = col.ColumnName;
                    if (col.DataType == typeof(string))
                        e.Row[fn] = "";
                    else if (col.DataType == typeof(Int16) || col.DataType == typeof(UInt16)
                                                           || col.DataType == typeof(Double))
                        e.Row[fn] = 0;
                    else if (col.DataType == typeof(DateTime))
                        e.Row[fn] = DateTime.Today;
                }
            }
            e.Row["kraj"] = "Polska";
            e.Row["Knt_krajISO"] = "PL";
            e.Row["Knt_OsPlec"] = 1;
            e.Row["Knt_Oskraj"] = "Polska";
            e.Row["Knt_PodatekVat"] = 1;
        }
    }
}