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