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. Bezpośrednia obsługa CDN OPTIMA

2011-11-09

Poprzedni dokument http://tgsoft.pl/Blog.aspx?id=59 opisuje dostęp do danych z systemu handlowego Sz@rk.Funkcja taka byłaby zupełnie nieprzydatna dla użytkowników innych systemów, którzy korzystają jednocześnie z Sz@rk CRM.

Również ten problem rozwiążemy za pomocą otwartej architektury systemu Sz@rk API.Wystarczy przygotować własny moduł TGSoft.Data.Extensions.dll, w którym zawarte będą nowe implementacje klas, "zasłaniające" oryginalną funkcjonalność Sz@rk.

Można zdefiniować własny dostęp do danych za pomocą bezpośredniego dostępu do bazy SQL, jednak należy pamiętać, że takie opcje nie będą działać w modelu pracy zdalnej (on-line) przez Internet, za wyjątkiem pracy przez zdalne pulpity.

W naszym przykładzie wykorzystujemy technologię middleware i gotowe serwisy, który zostały opracowane na potrzeby bezpośredniej współpracy z CDN Optima. Rozwiązanie pozwala na korzystanie z bazy OPTIMA na równi z bazami Sz@rk za pomocą serwera aplikacji Sz@rk Server.

Podgląd listy faktur bezpośrednio z CDN Optima.

Okno "Rejestry sprzedaży" traktuje załączone zewnętrzne dane jak własne, dlatego dostępne są wszystkie standardowe opcje Sz@rk. Dostępny jest również wbudowany generator raportów oraz nasze projekty wydruków. Przykład wydruku w/w danych wg projektu FastReport zapisany do formatu PDF bezpośrednio z programu.

Podgląd szczegółów Faktury VAT bezpośrednio z CDN Optima. Fakturę można też wydrukować za pomocą projektów Sz@rk.

Poniżej prezentujemy pełny kod klasy, która zmienia funkcjonalność naszego programu i pobiera dane bezpośrednio z CDN Optima za pomocą serwisów Sz@rk Server. Skompilowana biblioteka DLL z kodem źródłowym dostępna będzie w wersji instalacyjnej Sz@rk CRM.

using System;
using TGSoft.Data;
using TGSoft.Repository;
 
namespace TGSoft.Data.Extensions
{
    public class Faktury : TGSoft.Data.Szark.Faktury
    {
        public Faktury(TypDokumentu typDokumentu)
            : base(typDokumentu)
        {
            zrodloDanych = ZrodloDanych.Optima;
        }
 
        public override void OpenFaktury(object id_faktury, object id_kontrahenta,
                                    int zakresProforma, object mag, object data1, object data2)
        {
            Mag = mag;
            Data1 = data1;
            Data2 = data2;
            if (id_faktury != null)
            {
                DTFaktury.Where = "TrN_TrNId=@P0";
                DTFaktury.Open(new object[] { id_faktury });
            }
            else
            {
                Controller.SetColumnProperties("kod", "Kod", 100);
                Controller.SetColumnAlignmentLeft("kod");
                Controller.SetColumnProperties("grupa", "Grupa", 80);
                Controller.SetColumnAlignmentLeft("grupa");
                if (id_kontrahenta != null)
                {
                    DTFaktury.Where = "A.Trn_PodId=@P0 AND A.TrN_DataWys BETWEEN @P1 AND @P2 " +
                                      "AND A.TrN_Anulowany=0";
                    DTFaktury.Open(new object[] { id_kontrahenta, data1, data2 });
                }
                else
                {
                    DTFaktury.Where = "A.TrN_DataWys BETWEEN @P0 AND @P1 AND A.TrN_Anulowany=0";
                    DTFaktury.Open(new object[] { data1, data2 });
                }
            }
            DTFaktury.SetPrimaryKey("TrN_TrNId");
        }
 
        protected override DADataTable GetTableFaktury()
        {
            if (typDokumentu == TypDokumentu.Faktura)
                return new DADataTable(Services.Tables.CDN_RejestryFaktur, "", null);
            else
                return new DADataTable(Services.Tables.CDN_RejestryProforma, "", null);
        }
 
        protected override DADataTable GetTableVAT()
        {
            return new DADataTable(Services.Tables.CDN_RejestryFakturZapisyVAT, "TrV_TrNID=@P0",
                                   new object[] { DTFaktury.GetID() });
        }
 
        protected override DADataTable GetTableZapisy()
        {
            return new DADataTable(Services.Tables.CDN_FakturaZapisy, "TrE_TrNId=@P0",
                                   new object[] { DTFaktury.GetID() });
        }
 
        protected override DADataTableRecord GetTableNabywca()
        {
            return new DADataTableRecord(Services.Tables.CDN_FakturaNabywca, DTFaktury.GetID())
                                         { Alias = "A", PrimaryKey = "TrN_TrNId" };
        }
 
        protected override DADataTableRecord GetTableOdbiorca()
        {
            return new DADataTableRecord(Services.Tables.CDN_FakturaOdbiorca, DTFaktury.GetID())
                                        { Alias = "A", PrimaryKey = "TrN_TrNId" };
        }
 
        public override void FillRejestrySprzedazy(out DADataTable tableFaktury,
                                out DADataTable tableVat, out DADataTable tableSumy, object zakres)
        {
            string where = Optima.Where_RejestryFaktur(Data1, Data2, zakres);
            string whereIN = Optima.WhereIN_RejestryFaktur(where);
 
            tableFaktury = new DADataTable(Services.Tables.CDN_RejestryFaktur, where, null);
            tableFaktury.Open();
 
            tableVat = new DADataTable(Services.Tables.CDN_RejestryFakturZapisyVAT, whereIN, null);
            tableVat.Open();
 
            tableSumy = new DADataTable(Services.Tables.CDN_RejestryFakturSumyVAT, whereIN, null);
            tableSumy.Open();
        }
    }
}