軟體開發(軟件開發)

網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。

雲端VPS虛擬主機租用

我們的雲端VPS虛擬主機是採用雲端(虛擬化)技術所開發之全新雲端伺服器服務,可以選擇多種作業系統(Windows、Linux等),客戶可載入自訂的應用環境,執行自己所要提供的網路服務,我們的雲端服務可為您的網站提供最完美的解決方案。

搜尋引擎最佳化SEO

搜尋引擎最佳化(SEO)不僅能提高網站在搜尋結果的排名,更能帶來大量對我們產品或服務真正有需求的訪客。SEO 最棒的特質之一就是不像廣告一樣亂槍打鳥而導致用戶的反感,反而更能提升點閱率跟成交率喔。

服務宗旨

網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。

我們的成立宗旨就是要以最猛的IT技術讓這個世界更Smart,在我們貫徹我們裡想的同時,我們希望可以把我們所開發的系統帶給台灣的中小企業,除了要推薦好的東西之外,我們也希望做點改變,所以我們的第一目標就是要使用最好用的系統再加上您寶貴的創意,不僅僅可以節省你大量的荷包,還可以有一個像樣的網站。我們可以幫你做的有

企業管理
  • 策略管理
  • 目標管理
  • 行銷管理
  • 財會管理
  • ERP導入
  • 企業流程自訂
資訊管理
  • 網站架設
  • 虛擬化/雲端架設
  • 主機代管
  • 私有雲建制與導入
軟體開發
  • UML設計
  • 版本控管
  • 企業軟體開發
  • APP開發
  • 網頁設計
資訊安全
  • 網頁弱點掃描
  • 主機弱點掃描
  • 木馬檢測
  • 資安鑑識
  • 設計網路架構
  • 資安監控
行銷
  • 關鍵字SEO
  • 社群網路行銷
  • 部落格行銷
  • FaceBook 粉絲團
其他
  • 協助企業申請Google Email
好玩工具開發

講出你的創意吧!沒有甚麼是資訊辦不到的

2016年10月27日 星期四

ERP 產品成本管理與計算

       目前很多企業多少都有導入ERP系統,但不管是用到什麼樣的ERP,SAP、Oracle、其他等,基本上幾乎都有一個共同的特點,就是目前的應用還局限於企業的各部門組織資料的輸入,然後將這部分的數據加工應用,形成一些簡單的統計分析報表,也就是說,事實上這還算是處於基礎的ERP應用階段,竟然這樣,那麼企業到底應該如何更加充分地發揮ERP的作用呢?這也是我想從這篇文章來講解,我主要從成本控制方面來加以闡述。

images


      第一,我們先來了解一下企業製造生產商品的成本構成因素,產品的成本主要由材料成本 + 人工成本 + 製造費用等部分組成,而其中製造業最主要的成本是材料成本(比例相對比較大),其次是人力成本,第三是製造費用成本,而要控制好各項成本,就是要了解其中各成本項目分別是多少,在沒有應用ERP的時候,通常成本會計計算成本方式很簡單,就是將本月生產的產品數量作為基數,計算出材料,人工及製造費用,按一定的規則,將所有成本分攤至本月所有產生的產品中,從總體成本來說計算是沒有什麼問題,但由於是平均分攤的方式,相對每種產品而言,所看到的成本就不一定真實了,而且如果發現成本有異常,也比很難去追著問題的來源,但是很難去做改善了。但是,企業在應用了ERP以後,管理的精度和側重點就完全不一樣了,因為ERP系統可以自動歸集材料成本,自動計算人工成本和製造費用的分攤,不再只是一個所謂的【平均值】,每個個產品甚至每一張訂單的成本都可以精確地計算出來,我們知道成本會計的工作重點不再是核算成本,而是對成本產生過程的監控進而追溯,也對可能產生的異常情況進行預測和預防警惕,並在成本計算完成後對成本異常的數據分析原因並解決,這樣一步步地降低成本,在所有第一步就是要利用ERP來計算各種成本,只有有了這些數據才能發現問題和設定改善目標。

        再來通常,計算完成本我們就會發現很多的異常情況,比如有些訂單產品的材料按標準投入,產出卻遠遠高於預計的產量,有些訂單產品有材料投入卻沒有產出,更或者有些訂單超產特別大,而有些訂單卻沒有生產數據,所有這些異常發生的原因在在車間管理不規範造成的,車間存在挪料或不按生產計劃領料,不按生產任務單入庫的情況。如果ERP上線的時候顧問有特別的說明提醒或者成本會計有經驗,在一開始就嚴格要求車間規範作業,這種情況就會比較少發生,但很多企業做不到這一點。發現這些異常後,成本會計自然會去去,在追問問題的過程中,一方面讓相關部門,尤其是製造部門更加熟悉了解規範化作業流程的重要性,同時也讓這些部門人員慢慢樹立起成本意識,養成節省成本的觀念和習慣。

       ERP能精確計算產品成本,成本產生的過程ERP是否就無能為力了呢?非常.ERP計算成本只是減少了人工計算的工作量和增加了計算的精確度,過程控制才是ERP能產生效益的最大通常,材料成本在製造行業的產品成本中佔了絕大部分,而ERP可用於控製材料成本但是非常有效的一個面,在材料領用的時候,ERP可以按產品BOM的標準用量控製材料的領用,不可以隨意超標;而對於因為報廢等原因造成的材料超耗,ERP按設定的特殊流程處理,在這個流程中,所設定的審查和知會人員跟正常另一方面,當車間材料的領用都很規範後,我們就可以非常容易地檢查BOM數據的精度,因為我們完全可以根據領料的數量和產出,及車間剩餘的庫存來檢驗BOM是偏大,偏小或者剛好。這樣一來,成本控制的源頭就更加精確。在此基礎上,再去分析各項材料是否還有壓縮的空間,配套相關的操作規程和工具,方法,進一步節省成本。我們有個客戶就做到了這一點,在該企業的車間領用材料中,有個材料就是我們常用的膠帶,通常很多企業認為它的成本低用也不是特別大,所以在管理上也不重視,但這家企業是這樣做的:在需要使用的工序上,劃出刻度,然後給相關的作業人員培訓,做什麼產品用多少厘米毫米、公分、臺尺)的長度,這樣做以後,一卷膠帶可以做多個產品基本上都可以計算出來,可見其管理的深度。當然,這些改善的結果最後還是會反饋到ERP系統中,讓ERP來控制。



(其他參考文章)
MPS主生產計畫專文介紹(一)
MRPⅡ/ERP 能力需求計畫原理
庫存管理-概念與釐清
庫存管理探討-VMI
真正的庫存量形成探討
庫存管理的中樞控管法則(上)
庫存管理的中樞控管法則(下)
BOM表管理與設定﹣輔料是否需輸入BOM
何謂 進銷存、ERP、WMS?三者差異性【軟體開發、軟件開發、程式設計】
ERP 產品成本管理與計算
庫存量正確性衡量法則
粗能力需求計畫(RCCP) - 專文介紹
如何利用軟體來協助起的的銷售統計和分析





網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

Windows 10 的 UDP 與 TCP 網路通訊實作案例二(軟體開發、軟件開發、程式設計、程式開發)

      這篇文章主要是續之前另外一篇文章 UDP 網路通訊處理,這次是繼續講解 TCP 網路通訊處理,與UDP 協定不同的是,TCP協定是更加嚴謹,它是基於確認連接是可靠性的,也就是在發生通訊傳輸前,客戶端(Client)必須確認是連接到伺服器(Server)端,因為 TCP 對數據封包的次序與完整性要求相對嚴格,這樣才能確保數據傳輸過程可以正確無誤地送達目的地,所以 TCP 就常用在 文件的傳送,如Line聊天的檔案傳送、Skype 檔案的傳送等。




     在 Widnows 10 Universal APP 平台下(UWP ),是透過一個 StreamSocket 類別來提供 TCP 網路通訊傳輸協定的 Socket 功能.
在 Client 端(客戶端)大致我們遵守以下幾個步驟:
1.建立一個 StreamSocket 實體物件。
2.呼叫 StreamSocket.ConnectAsync 方法,來與 Server 端作連接要求。
3.使用 OutputStream 屬性所返回的輸出流(Stream),就可以進行發送資料;
    而 InputStream 屬性則是返回輸入流,是用在接受資料。
4.切記當不再使用 Socket 時,呼叫 Dispose 方法來釋放其所佔用的相關資源。

在 Server 端 (伺服器),我們則需要使用一個 StreamSocketListener 物件,綁定繫結 本機的位址跟Port,來監聽 客戶端(Client)的連接請求服務,而當監聽到客戶發出的請求服務時,會引發另外一個事件 ConnectionReceived 事件,從這個事件的Arg參數,我們可以獲取一個與客戶端進行通訊的 StreamSocket 物件。

上面簡單描述原理,以及程式撰寫大致步驟原理,我一樣習慣來個實際寫作案例來引導,我一樣為了簡單化,我把 Server 端界面與 Client 端界面放在一起,這樣這個範例程式可以充當伺客戶器角色也可以當客戶端角色,在實作案例中 客戶端可以選擇一個圖片已經輸入一些文字內容來描述圖片,最後可以發送圖片跟文字內容給伺服器端,當然伺服器端會馬上監聽到有傳輸服務請求,立即結束資料,並顯示在伺服器端的界面。
系統畫面如下圖

(Server 端)
image


(Client 端)
image



下面是相關的界面 XAML Code:

<Pivot>
           <PivotItem Header="伺服器(Server 端模擬)">
               <Grid>
                   <Grid.RowDefinitions>
                       <RowDefinition Height="Auto"/>
                       <RowDefinition />
                   </Grid.RowDefinitions>
                   <StackPanel>
                       <TextBlock Text="Server IP Address:" Height="30" Margin="0,0,-0.333,0"/>
                       <TextBlock x:Name="tbSvIP" FontSize="24" IsTextSelectionEnabled="True" Height="30" Margin="0,0,-0.333,0"/>
                   </StackPanel>
                   <ListBox Name="lbItems" Grid.Row="1" Margin="6,15,6,5">
                       <ListBox.ItemTemplate>
                           <DataTemplate>
                               <Grid>
                                   <Grid.ColumnDefinitions>
                                       <ColumnDefinition Width="Auto"/>
                                       <ColumnDefinition/>
                                   </Grid.ColumnDefinitions>
                                   <Image Width="50" Height="50" Stretch="UniformToFill" Source="{Binding Path=Image}"/>
                                   <TextBlock Grid.Column="1" TextWrapping="Wrap" FontSize="18" Text="{Binding Path=Text}" Margin="15,0,0,0"/>
                               </Grid>
                           </DataTemplate>
                       </ListBox.ItemTemplate>
                   </ListBox>
               </Grid>
           </PivotItem>
           <PivotItem Header="客戶端(Client 端模擬)">
               <StackPanel>
                   <TextBox Name="txtServerIp" Header="伺服器IP:"/>
                   <Image Name="img" Width="150" Height="150" HorizontalAlignment="Left"/>
                   <Button Content="挑選圖片..." Click="OnPickImagFile"/>
                   <TextBox Name="txtContent" Header="圖片描述:" Height="120"/>
                   <Button Content="傳送資料" HorizontalAlignment="Stretch" Click="OnSend"/>
               </StackPanel>
           </PivotItem>
       </Pivot>


現在來看主要核心程式碼 
一開始我宣告 一個 LISTEN_PORT=“1688”,作為 Server 端監聽的端口。
然後也宣告一個 StreamSocketListener 類別的 listener 欄位。
相關程式我也詳細註解了,主要是在 Loaded事件時,建立對應的監聽事件 ConnectionReceived 、以及使用 BindServiceNameAsync 方法指定監聽的Port。
image


接下來重點在 ConnectionReceived 事件,專門用於接受到 Client 端發出的請求數據。

private async void listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
       {
           string text = string.Empty;
           IRandomAccessStream imgStream = new InMemoryRandomAccessStream();

           // 處理從 Client 端接受到的訊息
           using (StreamSocket socket = args.Socket)
           {
               using (DataReader reader = new DataReader(socket.InputStream))
               {
                   try
                   {
                       // 讀出第一個數字,表示文件的長度
                       await reader.LoadAsync(sizeof(uint));
                       uint len = reader.ReadUInt32();
                       await reader.LoadAsync(len);
                       IBuffer buffer = reader.ReadBuffer(len);
                       // 寫入 Stream
                       await imgStream.WriteAsync(buffer);
                       await reader.LoadAsync(sizeof(uint));
                       // 再次讀入字串長度
                       len = reader.ReadUInt32();
                       // 讀出字串的內容
                       if (len > 0)
                       {
                           await reader.LoadAsync(len);
                           text = reader.ReadString(len);
                       }
                   }
                   catch (Exception ex)
                   {
                       DisplayErrMessage(ex.Message);
                   }
               }
           }

           // 顯示接受到的客戶端訊息內容
           await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
               {
                   BitmapImage bmp = new BitmapImage();
                   bmp.DecodePixelWidth = 50;
                   imgStream.Seek(0);
                   bmp.SetSource(imgStream);
                   imgStream.Dispose();
                   lbItems.Items.Add(new { Image = bmp, Text = text });
               });
       }


再來 Client 端,主要是選好圖片內容、以及輸入文字描述後,執行【傳送資料】按鈕,而對應的程式碼,如下,我也寫上對應的註解
private async void OnSend(object sender, RoutedEventArgs e)
       {
           if (txtServerIp.Text.Length == 0)
           {
               DisplayErrMessage("請輸入伺服器服的IP位置");
               return;
           }
           IBuffer bufferImg = img.Tag as IBuffer;
           if (bufferImg == null)
           {
               DisplayErrMessage("請選擇圖像");
               return;
           }
           Button b = sender as Button;
           b.IsEnabled = false;

           using (StreamSocket socket = new StreamSocket())
           {
               try
               {
                   // 發出連線請求
                   await socket.ConnectAsync(new HostName(txtServerIp.Text), LISTEN_PORT);
                   // 準備傳送資料(圖片跟文字)
                   using (DataWriter writer = new DataWriter(socket.OutputStream))
                   {
                       // 首先寫入圖片
                       uint len = bufferImg.Length;
                       writer.WriteUInt32(len); //長度
                       writer.WriteBuffer(bufferImg);
                       // 寫入文字內容
                       if (txtContent.Text.Length == 0)
                       {
                           writer.WriteUInt32(0);
                       }
                       else
                       {
                           len = writer.MeasureString(txtContent.Text);
                           writer.WriteUInt32(len); //長度
                           writer.WriteString(txtContent.Text);
                       }
                       // 正式提交
                       await writer.StoreAsync();
                   }
                   txtContent.Text = "";
               }
               catch (Exception ex)
               {
                   DisplayMessage(ex.Message);
               }
           }
           b.IsEnabled = true;
       }
 


整個程式執行結果畫面 
(客戶端)

image












(伺服器端) 



網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:
allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen


2016年10月24日 星期一

Windows 10 的 UDP 與 TCP 網路通訊實作案例一(軟體開發、軟件開發、程式設計、程式開發)

        今年公司承包了許多大型專案,都是必須用到網路存取技術,例如 圖控軟體我們就必須透過 TCP 協定跟硬體設備溝通,來讀取上萬台工業風扇裝置的轉速、溫度等訊息;再來還有影像監控軟體也是大量用到TCP/UDP、Web API網路協定存取,因此在開發各種軟體時,很多機會勢必需要用到網路通訊的技術。

        而這篇教學技術文章,我特別是針對微軟的 Windows 10 平台上,也就是所謂的 Windows 10 通用應用開發(Universal APP,UAP),示範關鍵的程式技術,我想分為 2 篇文章分別介紹 UDP 與 TCP 存取技巧,而這篇文章就先針對 UDP協定來介紹,UDP協定是個無連接(不可靠)的協議,它只提供資料的不可靠傳遞,它一旦把應用程式發給網路層的資料傳送出去,就不保留資料備份(所以UDP有時候也被認為是不可靠的資料報協定),UDP在IP資料報的頭部僅僅加入了復用和資料校驗(欄位),但它相對于TCP 協定來說,資源耗用少、而且處理速度夠快,所以常被用在傳輸要求沒有那麼嚴格的條件下,例如:聊天訊息、網路視訊、語音傳遞。

在 WIndows 10 的 UAP/UWP 平台上,微軟透過一個 DatagramSocket 類別來封裝了所有有關 UDP 網路存取的相關功能。

我將示範 伺服器端(Server) 與 用戶端(Client) 的程式技巧

在 Server 端,主要步驟有

1.建立一個 DatagramSocket 實體物件。

2.建立一個對應的 MessageReceived 事件,它將用來接收 Client 發送的訊息。

3.使用 BindEndPointAsync 方法來綁定本機的位址(IP)、端口(Port),如果是需要本機的所有網路位址(有多張網卡、無線網路等)都可以監聽訊息,我們就改用 BindServiceNameAsync 方法,然後只要指定要擊結對應的Port即可。

而在 Client 端,主要是一樣建立一個 DatagramSocket 實體物件,在透過該 DatagramSocket 提供的 GetOutputSteamAsync() 方法,並在該方法傳入 Server端IP位址、Port即可。

在 XAML 界面我為了好示範,我將 Server 界面跟 Client 界面 放在一起,分別為2個頁籖,這是使用 <Pivot> 元素 (我在這邊不花時間解釋 XAML Code 知識,但開發 Windows 10 XAML 是必備的基本語法,一定要會而且很熟,我就特別喜歡 XAML Code)。

XAML 畫面如下圖

<Pivot>
           <PivotItem Header="Server 伺服器端">
               <Grid>
                   <Grid.RowDefinitions>
                       <RowDefinition Height="Auto"/>
                       <RowDefinition />
                   </Grid.RowDefinitions>
                   <StackPanel>
                       <TextBlock Text="Server IP地址:" FontSize="20"/>
                       <TextBlock Name="tbIp" FontSize="36" IsTextSelectionEnabled="True"/>
                   </StackPanel>
                   <ListView Grid.Row="1" Margin="0,15,0,3" Name="lvMsg">
                       <ListView.Header>
                           <TextBlock Foreground="LightGreen" Text="已截取的Client端請求" FontSize="20"/>
                       </ListView.Header>
                       <ListView.ItemTemplate>
                           <DataTemplate>
                               <StackPanel Margin="6,20">
                                   <TextBlock FontSize="20" Foreground="Yellow">
                                       来自
                                       <Run Text="{Binding Path=FromIP}"/>
                                       的消息:
                                   </TextBlock>
                                   <TextBlock TextWrapping="Wrap" FontSize="24" Text="{Binding Path=Message}"/>
                               </StackPanel>
                           </DataTemplate>
                       </ListView.ItemTemplate>
                   </ListView>
               </Grid>
           </PivotItem>
           <PivotItem Header="Client 端">
               <StackPanel>
                   <TextBox Name="txtServer" Header="Server IP:"/>
                   <TextBox Name="txtMessage" Header="發送訊息內容:" TextWrapping="Wrap" Height="200"/>
                   <Button HorizontalAlignment="Center" Content="送出" Padding="20,0" Click="OnSend"/>
               </StackPanel>
           </PivotItem>
       </Pivot>

程式運行畫面如下圖

(Server 頁籖)

2016-10-23_23-25-03

(Cilent 頁籖)

2016-10-23_23-25-39

 

看完主要的界面宣告與結果,就開始來講解幾個主要核心程式碼

步驟 1.首先我宣告了 1 個常數 servicePort ,用於指定伺服器服務的端口Port.
    再宣告 2 個欄位(Fields), 作用於 Server UDP 與 Client UDP。

image

步驟 2.在 MainPage 建構子,宣告了載入實際時 綁定 Server 與 Client 端的 UDP Socket 。
   以及 Unload 時,釋放資源。

還有 我還綁定一個 Server 端要監聽 Client 端發送的訊息請求事件

image

步驟 3. Server 監聽事件 ,核心程式碼邏輯

相關程式碼,都附上註解

image

在上述 步驟 1 ~ 步驟 3 ,就完成 Server 端的主要監聽任務。

而 Client 端接下來的邏輯,就是在 Client 頁籖界面,輸入 Server 的 IP 位址、端口,以及要發送的內容,相關程式碼邏輯如下

OnSend() 是在 Client 頁籖界面,執行【送出】按鈕對應的動作方法

image

以上完成後,讓我們就可以來執行看看

在 Client 端頁籖 輸入訊息內容

image

在 Server 端監聽到的訊息如下

image

 

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

2016年10月12日 星期三

Windows APP 截取網頁內容轉存圖片檔(程式設計、程式開發、軟體開發)

今天早上在跟客戶開會時,客戶提到有個需求,就是客戶的員工需要常常瀏覽購物平台網頁商品、資訊,但必須及時截取畫面拍照,所以 Allen 我就開發一個小工具,可以讓使用者瀏覽網頁時,進行截取網頁畫面並轉成圖片檔。

(圖示1)

2016-10-12_02-43-27

而這個程式我用目前最新的平台(Windows Universal Platform)開發,因為是用短短 1小時的時間進行程式撰寫,所以功能比較陽春,但可以當做教學跟小工具使用,所以我就拿出來分享。

       一開始在上方的 網址 輸入,你要瀏覽的網頁,例如 http://tw.yahoo.com , 然後在點選瀏覽,就會載入 Yahoo 的網頁,此時你可以按左邊(中間偏下一點)有個按鈕【截取畫面】,執行後就會截取現在瀏覽的網頁“畫面”,

(圖示 2)

02

(圖示 3)

03

如果想要把網頁快照轉成圖片,我也寫了一個小功能的按鈕【將畫面存成圖片】,就可以存成實際的圖片。

05

    這樣就可以把網頁畫面及時拍照存檔,這個是個小範例,但是這個技術在知名的電子商務平台,例如 PCHome、Yahoo、淘寶等,都有類似的機制,就是你在訂購商品那瞬間,程式會把當時的產品訂購頁面存成及時圖片,以防止未來買賣有發生爭議時,可以作為交易的依據。

同時,我也把安裝程式放在 DropBox,因為我開發的平台為 Windows Universal APP,所以安裝方式請打開 powershell 直接把 Add-AppDevPackage.ps1 檔案拖拉到powershell 畫面,再按 Enter 鍵即可。

螢幕快照 2016-10-12 上午3.04.26

ddd

aaaaa

螢幕快照 2016-10-12 上午3.21.26

程式下載點

https://www.dropbox.com/s/673eet6odd4gyyk/NetQna_1.0.5.0_Debug_Test.rar?dl=0

下一篇,我會講解核心程式碼技巧(待續)

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

2016年10月3日 星期一

美容香水保養品 - 進銷存系統開發 (軟體開發、軟件開發、程式設計)

         感謝 水晶香國際股份有限公司 委託 網智數位量身定做開發符合保養品貿易公司的進銷存系統,雖然市面上很多套進銷存系統,但進銷存套裝軟體往往在某行業領域就是需要個別客製化,例如利潤分析的報表、商品出貨的統計、跨倉的寄存買買、各產品不同經銷商的折扣差異等等,這些都不是一般市面上的套裝可以完全符合店家客戶需求的,而該客戶專門是代理國際品牌,水晶香國際的謝董事長因為曾經也是知名通路商擔任主管多年,所以對數字管理有獨特的思維看法,也特別設計在這次的委託軟體開發案。

photo_l_146277617861photo_b_110_142952199702

 

水晶香國際為台灣香水香氛及保養品專業代理商,以代理國際知名香水及保養品類為主,目前代理品牌如下所示:
瑞士-MUSK Collection香水香氛-總代理商
瑞士-ATHANOR有機保養品-總代理商

     https://www.facebook.com/SWISS.MUSK.COLLECTION
     https://www.facebook.com/Athanor.Taiwan

 

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
skype: netqna
line:netqna
微信:netqna
黃先生 Allen