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
Sz@rk API - Import zamówienia z bazy SQL

2013-10-05

W poprzednim przykładzie zaprezentowaliśmy klasę SiOrder, z danymi wprowadzonymi bezpośrednio w kodzie projektu. Jednak w rzeczywistości zadanie będzie nieco trudniejsze, gdyż dane są dynamiczne i znajdują się w zewnętrznych źródłach innych systemów.

Sz@rk API zapewnia dostęp do klas .NET Framework oraz szeregu własnych bibliotek, które umożliwiają operowanie na zewnętrznych danych znajdujących się poza systemem Sz@rk. W przykładzie zaprezentujemy import zamówienia z bazy MS SQL Server systemu Sz@rk, pobierzemy dane kontrahenta bezpośrednio z tabeli klientów oraz kilka produktów z tabeli magazynu.

W celu dostosowania tego przykładu do własnych potrzeb wystarczy zmienić obydwa zapytania SQL oraz zmienić nazwy pól na własne.

Uwaga! Zastosowana biblioteka TGSoft.DB posiada również klasę MySql, którą posługujemy się analogiczne jak klasą MsSql użytą w przykładzie. Daje nam to możliwość integracji z większością sklepów internetowych opartych na bazie MySql.

Poniżej prezentujemy pełny kod C# do wykonania importu zamówienia z bazy SQL. Projekt dostępny jest w programie z listy przykładów do zaimportowania.

namespace Szark
{
    using System;
    using System.Data;
    using System.Drawing;
    using System.Windows.Forms;
    using TGSoft.UI;
    using TGSoft.Data;
    using TGSoft.DB;
    using TGSoft.Utils;

    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        private readonly GridController gc1;
        private DataTable dtOrder;
        private DataTable dtProducts;
        
        
        public Form1(GridController sender)
        {
            this.InitializeComponent();
            buttonLoad.Click += buttonLoad_click;
            buttonSave.Click += buttonSave_click;
            gc1 = sender;
        }

        public void Main()
        {
            this.ShowDialog();
        }

        private void buttonLoad_click(object sender, EventArgs e)
        {
            MsSql sql = new MsSql("localhost", "tgsoft1", "", "");
            
            dtOrder = sql.GetSQLTable("SELECT * FROM kontrahenci WHERE id=15");
            dtProducts = sql.GetSQLTable("SELECT TOP 5 * FROM gm_mater WHERE mag=1");
            
            if (dtOrder.Rows.Count == 1 && dtProducts.Rows.Count > 0)
                buttonSave.Enabled = true;
        }

        private void buttonSave_click(object sender, EventArgs e)
        {
            DataRow row = dtOrder.Rows[0];
            
            ISiOrderList list = gc1.Host as ISiOrderList; // Dostęp do bieżącej listy w celu
				// odczytu aktualnego id sklepu
            SiOrder order = new SiOrder(list.Sklep.ToInt());
            
            order.Order_id = order.GetLastOrder_id() + 1; // Id zamówienia w sklepie internetowym,
				// w przykładzie odczytujemy ostatni nr z naszej bazy
            order.Status_id = 1; // Status zamówienia
            order.Payment_id = 1; // Sposób zapłaty
            order.Shipping_id = 2; // Sposób dostawy
            order.Shipping_cost = 10; // Koszt dostawy
            order.Date = DateTime.Now; // Data zamówienia
            order.Email = row["e_mail"].ToStr();
            
            // Adres płatnika
            order.Ba_company = row["skrot"].ToStr();
            order.Ba_firstname = row["nazwa1"].ToStr();
            order.Ba_lastname = row["nazwa2"].ToStr();
            order.Ba_city = row["miasto"].ToStr();
            order.Ba_postcode = row["kod_pocztowy"].ToStr();
            order.Ba_street1 = row["ulica"].ToStr();
            order.Ba_tax_id = row["nip"].ToStr();
            order.Ba_phone = row["telefon_1"].ToStr();
            order.Notes = "Test zamówienia Sz@rk API";
            
            //Adres dostawy
            order.Da_firstname = "Jan";
            order.Da_lastname = "Kowalski";
            order.Da_city = "Nowy Targ";
            order.Da_postcode = "34-400";
            order.Da_street1 = "Szaflarska 1";
            order.Da_tax_id = "000-000-00-00";
            order.Da_phone = "18 1234567";
            
            foreach (DataRow r in dtProducts.Rows)
            {
                SiProduct product = order.NewProduct();
                product.Name = r["nazwa1"].ToStr();
                product.Code = r["symbol"].ToStr();
                product.Price = r["cenazb1"].ToDecimal();
                product.Quantity = 1; // Ilość
                product.Discount_perc = 10; // Rabat %
                product.Tax_value = r["podatek"].ToInt();
                product.Unit = r["jm"].ToStr();
                product.Pkwiu = r["sww"].ToStr();
                product.Option = r["nazwa2"].ToStr();
                product.Option2 = r["opis"].ToStr();
                order.Add(product);
            }
            // Oblicza wartości zamówienia (Brutto, VAT, Total) na podstawie dodanych produktów
			order.SUM();
            
            if (order.Save() != null)
            {
                gc1.LoadData();
                DialogResult = DialogResult.OK;
            }
        }
    }
}