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 - Sklepy internetowe osCommerce

2011-12-07

osCommerce to bezpłatny sklep internetowy oparty na licencji GNU GPL

Wszystkie projekty osCommerce są dostępne za darmo, można je pobrać, zainstalować i używać bez konieczności ponoszenia jakichkolwiek kosztów.

Oryginalna strona projektu: http://www.oscommerce.com/

W Polsce powstało wiele firm oraz społeczności, które oferują pomoc i wdrożenia sklepów osCommerce, oraz własne dystrybucje (rozszerzenia). Między innymi http://www.oscommerce.info.pl/. Płatne dystrybucje łatwo znajdziesz za pomocą google.pl

Sz@rk API pozwala na integrację z dowolnym sklepem internetowym, w tym jednak dokumencie opiszemy dedykowane rozwiązanie dla osCommerce. Sposób konfiguracji sklepów opisaliśmy w poprzednim dokumencie.

Lista zamówień otwarta bezpośrednio ze sklepu internetowego.

W oknie "Zamówienia On-Line", Sz@rk wyświetla zamówienia z wybranego sklepu i zakresu. Zdjęcie prezentuje listę zamówień ze sklepu osCommerce opartego na bazie danych MySQL.

Każde Zamówienie możemy otworzyć w dodatkowym oknie prezentującym szczegóły dokumentu.

Do prawidłowego działania w/w opcji musimy zdefiniować własną klasę ZamowieniaOnline w module:TGSoft.Data.Extensions

Poniżej pełny kod klasy.

using System;
using TGSoft.Data;
using MySql.Data.MySqlClient;
 
namespace TGSoft.Data.Extensions
{
    public class ZamowieniaOnline : TGSoft.Data.Szark.ZamowieniaOnline
    {
        public const string DataBase = "MySQL";
 
        private MySqlConnectionStringBuilder builder;
        public MySqlConnectionStringBuilder Builder
        {
            get
            {
                if (builder == null && !string.IsNullOrEmpty(SQLServer))
                {
                    builder = new MySqlConnectionStringBuilder()
                    {
                        Server = SQLServer,
                        Database = SQLDataBase,
                        UserID = SQLLogin,
                        Password = SQLPassword,
                        Pooling = false,
                        AllowZeroDateTime = true
                    };
                }
                return builder;
            }
        }
 
        protected override DADataTable GetTableZamowienia()
        {
            string where = "";
            object[] param = null;
            if (IDzamowienia != null)
            {
                where = "orders_id=@P0";
                param = new object[] { IDzamowienia };
            }
            else
            {
                if (Zakres == 0)
                {
                    where = "orders_status NOT IN (3, 14, 16)";
                }
                else if (Zakres == 1)
                {
                    where = "date_purchased BETWEEN @P0 AND @P1";
                    param = new object[] { Data1, Data2.AddDays(0.999999) };
                }
            }
            return new DADataTable(Builder, SqlOrders, where, param) { AutoUpdateOnPost = true, 
                            ReducedDelta = true, TableName = "orders", PrimaryKey = "orders_id" };
        }
 
        protected override DADataTable GetTableZapisy()
        {
            return new DADataTable(Builder, SqlProducts, "orders_id=@P0", new object[]
                                    { IDzamowienia });
        }
 
        protected override string GetSqlUpdateKontrahent()
        {
            return string.Format("UPDATE customers SET szark_id_kontrahenci={0} WHERE
                    customers_id={1}", IDkontrahenta, DTZamowienia.FieldByName("customers_id"));
        }
 
        protected override string GetSqlUpdateZamowienie()
        {
            return string.Format("UPDATE orders SET szark_id_gm_izamowienia={0} WHERE
                        orders_id={1}", IDzamowieniaSzark, DTZamowienia.FieldByName("orders_id"));
        }
 
        protected override object GetUwagi()
        {
            var dt = new DADataTable(Builder, SqlComment, "", new object[] { IDzamowienia });
            dt.Open();
            return dt.FieldByName("comments");
        }
 
 
        private const string SqlOrders = @"
SELECT orders_id, orders_id AS id, szark_id_gm_izamowienia,
       O.customers_id, K.szark_id_kontrahenci, O.customers_email_address AS e_mail,
       date_purchased AS data, payment_method AS sposob_zaplaty,
       billing_company AS firma, billing_nip AS nip, billing_name AS nazwa1, '' AS nazwa2,
       billing_street_address AS ulica, billing_postcode AS kod_pocztowy, billing_city AS miasto,
       S.orders_status_name AS status_nazwa, last_modified AS data_zmiany,
       delivery_company AS odb_firma, delivery_nip AS odb_nip, delivery_name AS odb_nazwa1,
       '' AS odb_nazwa2, delivery_street_address AS odb_ulica,
       delivery_postcode AS odb_kod_pocztowy, delivery_city AS odb_miasto, 
       CASE orders_status
            WHEN 15 THEN '1'
            WHEN 1 THEN '2'
            WHEN 2 THEN '3'
            WHEN 3 THEN '6'
            WHEN 14 THEN '7'
            WHEN 16 THEN '8'
       ELSE 5
       END AS status,
       CASE WHEN szark_id_gm_izamowienia IS NULL THEN '0' ELSE '1' END AS flg_szark,
       (SELECT value FROM orders_total WHERE orders_id=O.orders_id AND class='ot_subtotal')
                                                                                     AS brutto,
       (SELECT value FROM orders_total WHERE orders_id=O.orders_id AND class='ot_total')
                                                                                     AS total,
       (SELECT value FROM orders_total WHERE orders_id=O.orders_id AND class='ot_tax') AS vat,
       (SELECT value FROM orders_total WHERE orders_id=O.orders_id AND class='ot_shipping')
                                                                               AS koszt_dostawy
FROM orders O
LEFT OUTER JOIN orders_status S ON (S.orders_status_id=O.orders_status)
LEFT OUTER JOIN customers K ON (K.customers_id=O.customers_id)
WHERE {Where}";
 
        private const string SqlProducts = @"
SELECT orders_products_id AS id, products_model AS symbol, products_name AS nazwa,
       products_quantity AS ilosc, products_price AS cenabn, final_price AS cenazb, products_tax
                                                                                    AS stawka_vat,
       (SELECT products_options_values FROM orders_products_attributes WHERE
                    orders_products_id=P.orders_products_id AND products_options='kolor') AS opis1,
       (SELECT products_options_values FROM orders_products_attributes WHERE
                    orders_products_id=P.orders_products_id AND products_options='rozmiar')
       AS opis2 FROM orders_products P WHERE {Where} ";
 
        private const string SqlComment = @"
SELECT comments FROM orders_status_history WHERE orders_id=@P0 AND orders_status_id=15
";
    }
}