Monday, October 31, 2011

[NAVISION] Item Card dengan Banyak Foto

Di NAV, kekurangan Item Card adalah tidak bisa menyimpan foto item lebih dari satu. Kebutuhan ini biasanya diperlukan untuk barang sparepart yang perlu foto dari beberapa sudut. Untuk mengakalinya, bisa digunakan aplikasi tambahan berupa aplikasi web yang contoh programnya akan saya tunjukan.
Pada Item Card, buat control dan beri nama Photo.
control photo
Lalu beri script berikut :

  1: 
  2: HYPERLINK('http://10.10.10.14/itempic/Default.aspx?itemno=' + "No.");
  3: 

--


Kemudian, kita buat solution di .NET. Kali ini saya menggunakan Visual studio 2005 dengan basprog C#. Lalu berikut contoh scriptnya :
Default.aspx:

  1: <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2: 
  3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4: 
  5: <html xmlns="http://www.w3.org/1999/xhtml" >
  6: <head runat="server">
  7:     <title>Item Picture</title>
  8: </head>
  9: <body>
 10: 
 11:     <form id="form1" runat="server">
 12:     <div title="Item Picture">
 13:     <table>
 14:     <tr>
 15:     <td>
 16:         <span style="font-family: Tahoma">Item No : </span>
 17:     </td>
 18:     <td>
 19:         &nbsp;<asp:TextBox ID="TextBox1" runat="server" BorderStyle="None" Font-Names="Tahoma"></asp:TextBox></td>
 20:     </tr>
 21:      <tr>
 22:     <td>
 23:         <span style="font-family: Tahoma">
 24:     Item Name : </span>
 25:     </td>
 26:     <td>
 27:         &nbsp;<asp:TextBox ID="TextBox2" runat="server" BorderStyle="None" Font-Names="Tahoma"></asp:TextBox></td>
 28:     </tr>
 29:      <tr>
 30:     <td>
 31:         <span style="font-family: Tahoma">
 32:     Part No : </span>
 33:     </td>
 34:     <td>
 35:         &nbsp;<asp:TextBox ID="TextBox3" runat="server" BorderStyle="None" Font-Names="Tahoma"></asp:TextBox></td>
 36:     </tr>
 37:     </table>
 38:         <br />
 39:     
 40:         <table border="0" cellpadding="3" cellspacing="1" >
 41:         <tr>
 42:             <td bgcolor="#66ffff">
 43:                 <asp:Label ID="Label4" runat="server" Text="Upload foto :" Font-Names="Tahoma"></asp:Label></td>
 44:             <td bgcolor="#66ffff" colspan="3"><INPUT id="filUpload"  type="file" name="filUpload" runat="server">
 45:       <asp:Button id="btnUpload"  runat="server" Text="Upload" OnClick="btnUpload_Click" ></asp:Button>
 46:                 </td>
 47:         </tr>
 48:         <tr><td></td><td>
 49:             &nbsp;<asp:Label id="lblOutput" runat="server" Width="240px" Font-Names="Tahoma"></asp:Label></td></tr>
 50:         </table>
 51:     <table style="font-family: Tahoma">
 52:     <tr>
 53:     <td>Foto 1 :</td>
 54:     </tr>
 55:     <tr>
 56:     <td><asp:Image ID="Image1" runat="server"  /></td>
 57:     </tr>
 58:     <tr>
 59:     <td>Foto 2 :</td>
 60:     </tr>
 61:     <tr>
 62:     <td><asp:Image ID="Image2" runat="server"  /></td>
 63:     </tr>
 64:     <tr>
 65:     <td>Foto 3 :</td>
 66:     </tr>
 67:     <tr>
 68:     <td><asp:Image ID="Image3" runat="server"  /></td>
 69:     </tr>
 70:     <tr>
 71:     <td>Foto 4 :</td>
 72:     </tr>
 73:     <tr>
 74:     <td><asp:Image ID="Image4" runat="server"  /></td>
 75:     </tr>
 76:     <tr>
 77:     <td>Foto 5 :</td>
 78:     </tr>
 79:     <tr>
 80:     <td><asp:Image ID="Image5" runat="server"  /></td>
 81:     </tr>
 82:     </table>
 83:     </div>
 84:     </form>
 85: </body>
 86: </html>
 87: 

Default.aspx.cs :
  1: using System;
  2: using System.Data;
  3: using System.Configuration;
  4: using System.Web;
  5: using System.Web.Security;
  6: using System.Web.UI;
  7: using System.Web.UI.WebControls;
  8: using System.Web.UI.WebControls.WebParts;
  9: using System.Web.UI.HtmlControls;
 10: using System.Drawing;
 11: 
 12: using XYZPIC.Services;
 13: using XYZPIC.Data;
 14: using XYZPIC.Data.Bases;
 15: using XYZPIC.Entities;
 16: 
 17: public partial class _Default : System.Web.UI.Page 
 18: {
 19:     protected void Page_Load(object sender, EventArgs e)
 20:     {
 21:         if (Request.QueryString["itemno"] != null)
 22:         {
 23:             ViewState["itemno"] = Request.QueryString["itemno"].ToString();
 24: 
 25:             SafeNameXYZItem item = new SafeNameXYZItem();
 26: 
 27:             TList<SafeNameXYZItem> itemlist = new TList<SafeNameXYZItem>();
 28:             item = DataRepository.SafeNameXYZItemProvider.GetByNo(ViewState["itemno"].ToString());
 29:             TextBox1.Text = item.No;
 30:             TextBox2.Text = item.Description;
 31:             TextBox3.Text = item.PartNo;
 32: 
 33:             Image1.ImageUrl = "Image/noimage.jpg";
 34: 
 35:             Image2.ImageUrl = "Image/noimage.jpg";
 36: 
 37:             Image3.ImageUrl = "Image/noimage.jpg";
 38: 
 39:             Image4.ImageUrl = "Image/noimage.jpg";
 40: 
 41:             Image5.ImageUrl = "Image/noimage.jpg";
 42: 
 43:             TList<ItemPicture> itempicturelist = new TList<ItemPicture>();
 44:             ItemPictureQuery qry = new ItemPictureQuery();
 45:             qry.Append(ItemPictureColumn.Itemno, ViewState["itemno"].ToString());
 46:             itempicturelist = DataRepository.ItemPictureProvider.Find(qry);
 47:             int i = 1;
 48:             foreach (ItemPicture ip in itempicturelist)
 49:             {
 50:                 if (i == 1)
 51:                     Image1.ImageUrl = ip.Path;
 52: 
 53:                 if (i == 2)
 54:                     Image2.ImageUrl = ip.Path;
 55: 
 56:                 if (i == 3)
 57:                     Image3.ImageUrl = ip.Path;
 58: 
 59:                 if (i == 4)
 60:                     Image4.ImageUrl = ip.Path;
 61: 
 62:                 if (i == 5)
 63:                     Image5.ImageUrl = ip.Path;
 64: 
 65:                 i++;
 66:             }
 67:         }
 68:     }
 69: 
 70:     public bool ThumbnailCallback()
 71:     {
 72:         return false;
 73:     }
 74: 
 75:     protected void btnUpload_Click(object sender, EventArgs e)
 76:     {
 77:         string sSavePath;
 78:         sSavePath = "Image/";
 79: 
 80:         // If file field isn�t empty
 81:         if (filUpload.PostedFile != null)
 82:         {
 83:             // Check file size (mustn�t be 0)
 84:             HttpPostedFile myFile = filUpload.PostedFile;
 85:             int nFileLen = myFile.ContentLength;
 86:             if (nFileLen == 0)
 87:             {
 88:                 lblOutput.Text = "There wasn't any file uploaded.";
 89:                 return;
 90:             }
 91: 
 92:             // Check file extension (must be JPG)
 93:             if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpeg")
 94:             {
 95:                 if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpg")
 96:                 {
 97:                     lblOutput.Text = "The file must have an extension of JPG/JPEG";
 98:                     return;
 99:                 }
100:             }
101:             // Read file into a data stream
102:             byte[] myData = new Byte[nFileLen];
103:             myFile.InputStream.Read(myData, 0, nFileLen);
104: 
105:             // Make sure a duplicate file doesn�t exist.  If it does, keep on appending an incremental numeric until it is unique
106:             string sFilename = System.IO.Path.GetFileName(myFile.FileName);
107:             int file_append = 0;
108:             while (System.IO.File.Exists(Server.MapPath(sSavePath + sFilename)))
109:             {
110:                 file_append++;
111:                 sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) + file_append.ToString() + ".jpg";
112:             }
113: 
114:             // Save the stream to disk
115:             System.IO.FileStream newFile = new System.IO.FileStream(Server.MapPath(sSavePath + sFilename), System.IO.FileMode.Create);
116:             newFile.Write(myData, 0, myData.Length);
117:             newFile.Close();
118: 
119:             // Check whether the file is really a JPEG by opening it
120:             System.Drawing.Image.GetThumbnailImageAbort myCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
121:             Bitmap myBitmap;
122:             try
123:             {
124:                 myBitmap = new Bitmap(Server.MapPath(sSavePath + sFilename));
125: 
126:                 //insert ke table item_picture
127:                 ItemPicture ip = new ItemPicture();
128:                 ip.Itemno = ViewState["itemno"].ToString();
129:                 ip.Path = sSavePath + sFilename ;
130:                 ip.Validate();
131:                 if (IsValid)
132:                 {
133:                     DataRepository.Provider.ItemPictureProvider.Save(ip);
134:                 }
135: 
136:                 TList<ItemPicture> itempicturelist = new TList<ItemPicture>();
137:                 ItemPictureQuery qry = new ItemPictureQuery();
138:                 qry.Append(ItemPictureColumn.Itemno, ViewState["itemno"].ToString());
139:                 itempicturelist = DataRepository.ItemPictureProvider.Find(qry);
140:                 int i = 1;
141:                 foreach (ItemPicture ip2 in itempicturelist)
142:                 {
143:                     if (i == 1)
144:                         Image1.ImageUrl = ip2.Path;
145: 
146:                     if (i == 2)
147:                         Image2.ImageUrl = ip2.Path;
148: 
149:                     if (i == 3)
150:                         Image3.ImageUrl = ip2.Path;
151: 
152:                     if (i == 4)
153:                         Image4.ImageUrl = ip2.Path;
154: 
155:                     if (i == 5)
156:                         Image5.ImageUrl = ip2.Path;
157: 
158:                     i++;
159:                 }
160: 
161:                 // Displaying success information
162:                 lblOutput.Text = "File uploaded successfully!";
163: 
164:                 // Destroy objects
165:                 //myThumbnail.Dispose();
166:                 myBitmap.Dispose();
167:             }
168:             catch (ArgumentException errArgument)
169:             {
170:                 // The file wasn't a valid jpg file
171:                 lblOutput.Text = "The file wasn't a valid jpg file.";
172:                 System.IO.File.Delete(Server.MapPath(sSavePath + sFilename));
173:             }
174:         }
175:     }
176: }
177: 
Itu saja.

Monday, October 24, 2011

Kebutuhan Pengadaan Sistem Warehouse Management System Submodul Shipment Order

Kantor saya ada kebutuhan pengadaan sistem warehouse management system submodul shipment order dengan barcode scanner. Jika ada yang memiliki pengalaman atau keahlian disini, bisa kontak saya di alamat email adiwirasta[at]pt-bsa.co.id dan kita bisa tentukan waktu untuk presentasi ditempat saya.

Wednesday, October 12, 2011

Pilihan Diskon Hingga 90% di Sebuah Portal Pencarian Diskon Terbesar di Indonesia

Munculnya banyak perusahaan start up e-commerce, banyak terjadi akuisisi perusahaan ecommerce lokal oleh perusahaan raksasa luar negeri, dan populer-nya toko online di Indonesia menandakan bahwa internet merupakan pasar potensial untuk berbisnis di Indonesia. Berbagai pilihan online shop pun bermunculan dan tentunya, dengan konsep yang berbeda.

Perbelanjaan online dimana konsumen bisa menikmati berbagai pilihan diskon harian (daily deals) adalah salah satu konsep baru dalam dunia e-commerce yang menjadi salah satu tren bisnis di Indonesia. Hal ini ditandai dengan munculnya berbagai website penyedia diskon online voucher seperti deal keren dan disdus yang menyediakan layanan diskon gaya hidup super besar ini.

Melihat dari besatnya prospek dalam pasar online ini, Dskon muncul dengan mengusung konsep sebagai daily deals aggregator yang mengumpulkan penawaran diskon harian dari SEMUA website penyedia online voucher Indonesia, menyortirnya dan mengkategorikanya dalam satu website.

Namun, kami melihat pasar online indonesia lebih luas dari pada sekedar daily deals. Pasar e-commerce indonesia berkembang lebih jauh di sektor online shop dan online booking tikket. Melihat hal ini, Dskon mempunyai ide untuk berkembang lebih dari sekedar daily deals aggregator menjadi one-stop-shopping website dimana kita juga mengaggregasi online shop dan online booking tiket pesawat (terutama promo yang sedang berlangsung) dalam satu halaman yang cantik dan teratur.

Kami menyediakan penawaran restoran, salon, hotel, tiket pesawat dengan DISKON TERBAIK tanah air. Jadi, tidak usah heran jika nanti twitter dan Facebook Dskon yang beralamatkan di @dskon_com dan Dskon mengumbar berbagai promo fantastis untuk hotel, tiket pesawat atau lainnya. Kami memang bertujuan untuk berkembang menjadi pusat berbelanja online di Indonesia.

Muncul dan beroperasi di berbagai negara seperti Brasil, Meksiko, Argentina, Spanyol, Filipina, Turki dan lainya, Dskon ingin menjadi leading company dalam online shopping solution dunia. Diharapkan perkembangan ini membantu warga indonesia untuk semakin mudah dalam berbelanja hemat melalui internet.

Tuesday, October 11, 2011

Tawaran Kerjasama Bisnis Antar Jemput Oleh Salah Satu Pembaca

bos saya ada kendaraan tapi tidak punya link........mohon bantuannya. Tks
- Frans Louis dari komen di Bisnis Antar Jemput
--
Jika ada dari pembaca yang memiliki usaha bisnis antar jemput dan masih membutuhkan kendaraan, salah satu pembaca blog ini, Frans Louis, bersedia mengajak kerjasama.
Untuk berkenalan dengan Frans Louis, silahkan YM saya untuk mendapatkan alamat emailnya.

Tuesday, October 4, 2011

Mau Uang 800 Ribu?

Anda ingin uang 800 ribu?

Jika ingin, saya ingin mengajak kerjasama kepada 5 orang untuk sama-sama menggunakan peta Streetdirectory. Jika sudah memakai dan saya mendapatkan Blackberry Playbook, maka hadiahnya akan saya jual dan hasil penjualannya akan saya bagi 6.

Berikut email promosinya:
---

Hi Adi Wirasta,
Kamu punya blog/website ? dan mau dapetin Blackberry Playbook yang keren itu ?
Yap! Itu harta karun baru Streetdirectory kali ini!
Cara Gali Harta Karunnya:
1. Ajak blogger2 lain untuk pakai peta Streetdirectory sebanyak2nya (min. 5 blog).
2. Info & update terus ke idevent@streetdirectory.com : Cantumin nama  dan no. tlp kamu, berikut dengan URL blog kamu & URL blog lain yang sudah kamu ajak (tentunya yang sudah pakai peta Streetdirectory)
3. Yang paling banyak mengajak blogger lain untuk memakai peta Streetdirectory, itu dia yang dapetin harta karunnya!
Info penggalian harta karun di:  http://www.streetdirectory.co.id/sdi/

Salam Hangat,

---

Monday, October 3, 2011

Butuh Usul Nama Blog Seputar IT

Kepada pembaca blog tukang ketik yang terhormat,

Saya berencana membuat blog seputar IT dengan domain sendiri. Ada usul
nama domain yang menarik?

Terima kasih sebelumnya.

--
Sent from Gmail for mobile | mobile.google.com

Saturday, October 1, 2011

Menjadi Manajer IT Harus Rajin Belajar (Dengan Gratis)

Menjadi manajer IT, menambah ilmu adalah kewajiban yang harus
dilakukan terus menerus. Itu bisa dilakukan dengan cari bahan di
Google. Namun, otodidak sering tidak efektif dibanding mendengarkan /
ikut training. Tapi, sering dijumpai, di perusahaan dengan manajemen
tradisional menganggap training IT tidak penting.
.
Untuk mengakali kondisi seperti ini, seminar gratis adalah pilihan.
.
1. Join ke milis IT, is a must. Sering di milis2 mengadakan meeting2
yang membahas teknikal. Contoh Milis yang sering buat pertemuan: JUG
dan SQL SERVER INDO.
.
2. Datang ke seminar peluncuran produk baru oleh IBM, DELL, HP, juga
perlu. Selain mempelajari produk baru dan teknologi yang lagi tren,
berbincang2 dengan manajer IT bisa menambah ilmu (dan gratis).

--
Sent from Gmail for mobile | mobile.google.com

Analisa Berbisnis di Pekayon Bekasi dan Solusinya

Berbisnis makanan di Pekayon, Bekasi, sepertinya tidak menjanjikan.
Beberapa tempat makan dari yang kelas nanggung hingga premium pada
berguguran. Resto iga bakar di pertigaan Galaxy-pekayon, tutup.
Kwitauw sapi di jalan raya pekayon, tutup. Dapur Fatma di Pondok
Pekayon Indah, cuma bertahan 6 bulan. Dan ada beberapa kios yang coba
bertahaan walau sepi pengunjung.
.
Sepertinya,
1. Banyak orang di bekasi yang kepingin sukses namun tidak
memperhatikan perencanaan bisnis yang matang.
2. Banyak orang Bekasi mudah terhasut ajakan bisnis dimajalah, koran
dll yang sebetulnya didalangi oleh lembaga keuangan supaya pada
ngutang.
.
Kawasan Pekayon sebetulnya banyak didiami warga kelas menengah yang
tidak gampang mengeluarkan uang banyak untuk makan makanan mahal. Itu
terlihat dari banyaknya antrian di gerobak2 nasi goreng, sate madura,
bakso.
.
Kesimpulan: jika ingin buka usaha di pekayon, warteg mungkin pilihan
paling tepat. BEP cepat, pas dikantong, cocok buat semua orang.

--
Sent from Gmail for mobile | mobile.google.com