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;
}
}
}