Showing posts with label Navision. Show all posts
Showing posts with label Navision. Show all posts

Saturday, March 30, 2013

3 cara instan menjadi konsultan erp

Menjadi konsultan erp khususnya ms dynamic nav sebetulnya bisa di karbit. Tidak butuh 6 bulan atau 1 tahun lebih.

Berikut caranya.

1. Pelajari dasar akuntansi. NAV itu sebetulnya aplikasi akuntansi. Namun ditambahi dengan modul2 order management seperti sales order, purchase order, job order dll. Semua itu akan membentuk jurnal ketika terjadi proses posting disetiap transaksi.

Cara cepat mempelajari akuntansi adalah dengan mengunduh video dasar akuntansi di youtube.

2. Pelajari dasar order management. Setelah mengenal basic accounting, waktunya mempelajari order management dasar yaitu pembelian(PO) -- gudang(inventory) -- penjualan(SO).  Materi ini biasanya materi dasar NAV.

3. Setelah mempelajari SO - inventory - PO, barulah mempelajari jurnal yang dibentuknya. Seperti setelah PO, maka terbentuk AP. Cek sisi debet dan kreditnya. Cek ada berapa banyak jurnal yang terbentuk. Begitupun SO. Cek jurnal AR-nya. Cek jurnal diskon, ppn dll.

Itu dulu. Nanti disambung lagi jika ada kesempatan.

Friday, August 31, 2012

Error NAV: you cannot invoice order [nomor PO] for more than you have received

Jika anda menemukan error message di nav seperti berikut:

�you cannot invoice order [nomor PO] for more than you have received�


Maka yang perlu dicek adalah purchase line > kolom Qty. to Receive dan Quantity Received.

Cek apakah angka di Qty. to Receive sudah pindah ke Quantity Received.

Sunday, July 15, 2012

Cara mengganti report di sales invoice NAV

Di NAV, ada satu fungsi yang perlu diketahui buat para developer NAV jika mau melakukan seting report di sales invoice.

Untuk mengganti report di sales invoice, cukup dengan masuk ke menu Report Selection � Sales yang ada di Sales & Marketing > Setup > Report Selection � Sales.


Setelah form dipilih, ganti Report ID dengan report baru yang anda buat.


Saturday, July 14, 2012

Cara membuat Credit Memo di NAV

Untuk membuat credit memo sales invoice di NAV, biasanya dibuku-buku diberikan dua cara, satu lewat Application tab, satu lagi lewat Function > Get Posted Document Lines To Reverse.


Berdasarkan pengalaman, jika menggunakan Application tab seperti diatas, detailnya tidak ditampilkan sehingga tidak bisa diprint out.

Cara terbaik adalah yang kedua, lewat Function > Get Posted Document Lines To Reverse.

Jika sudah masuk ke Posted sales document line, kita bisa memilih sales invoice mana yang mau di reverse.


Setelah disorot dan dipilih ok, maka di sales invoice line akan muncul data-datanya dan kita bisa lakukan print out.


Friday, July 13, 2012

Cara membuat Dimension di NAV wajib diisi disemua transaksi

Untuk pengelompokan data jurnal diledger entri berdasarkan dimension departemen, ada baiknya disetiap GL Card yang kita ingin bisa dibreakdown, kita pasangkan setingan wajib isi Dimension.

Cara membuatnya, masuk ke Chart of Account > pilih tombol Account.
Pilih dimensions > Dimension-Single.


Setelah muncul jendela Default Dimension, isi dimension Code dengan DEPARTEMENT.
Masukan Value Posting dengan �Code Mandatory�


Namun harus diingat, setiap proses jurnal, baik general journal, sales order, sales invoice, purchase order, purchase invoice dan lain-lain yang menggunakan COA terseting Code Mandatory, akan selalu meminta untuk selalu diisi.

Thursday, July 12, 2012

Jika muncul error "You must specify Depreciation Book Code in Purchase Line ... "

Jika dalam pembuatan Purchase order kita menemukan error seperti ini:


�You must specify Depreciation Book Code in Purchase Line Document Type=�Order�, Document No.=�POXXX�, Line No.=�10000��

Artinya, Fixed asset yang kita buat masih belum lengkap pengisiannya.

Dalam mengisi fixed asset, fixed asset line wajib terisi:


Bagian yang dikotak merah, tidak boleh kosong.

Wednesday, July 11, 2012

Cara membuat user approval bisa jadi 2 approver di NAV

Dalam membuat user approval, kadang kala kita ingin membuat satu user bisa memproses 2 approval. Tapi tidak bisa dilakukan di NAV, karena form Approval user setup hanya memperbolehkan 1 user saja.


Cara mengakalinya sebetulnya sederhana, jika user ADI ingin dibuat bisa dua kali approval, yang perlu dibuat adalah satu user baru misalkan kita kasih nama ADI2.
Selesai deh :-)

Sunday, March 25, 2012

Panjang Karakter Customer Card NAV yang Bikin Pusing

Saat ini saya mendapat kendala di Microsoft Dynamic NAV. Kendala yang sepele tapi berdampak yang luar biasa ke bisnis proses di kantor.

Kendalanya sederhana, panjang kolom nama customer di NAV hanya 50.

Tapi ada customer kami yang memiliki panjang nama PT lebih dari 60 karakter.

Alhasil, seluruh proses transaksi dari sales order � invoice � faktur pajak jadi tidak bisa diterima.

Duh!!!

Sunday, February 12, 2012

Biarpun Satu Keluarga, Microsoft Bing Bukan Adik dari Microsoft Dynamics NAV

Biarpun satu keluarga, Microsoft Bing ternyata tidak memiliki dokumen seluruh isi jeroan dari Microsoft Dynamics NAV. Ketika saya mencari tahu apakah itu WHT Certificate No. Series di mesin pencari Bing, tidak ada hasilnya.


WHT Certificate No. yang saya maksud adalah setup nomor seri dari Financial Management > Purchase & Payables Setup :

Setup nomor seri PPh ini bermanfaat untuk penomoran jurnal PPh saat terjadi posting Purchase Invoice yang mengandung PPh.

Friday, January 27, 2012

Beda Entri Tanggal Model Textbox dan Datetime Picker

Di NAV, untuk menginput tanggal harus diketik. Tidak bisa dipilih. Bagi sebagian orang, cara seperti ini adalah �suck�.


Bagi sebagian orang itu, mereka merasa lebih nyaman jika untuk entri tanggal adalah model datetime picker, seperti ini:

Menurut saya, keduanya ada untung-ruginya.

Untuk model textbox (ketik langsung) seperti di NAV, untungnya lebih memudahkan kala entri data. Model seperti ini membuat entri jadi lebih cepat karena tidak membutuhkan mouse.

Sedangkan model date picker, untungnya ada pada pengguna yang sudah berumur karena melihat model kalender, mereka merasa lebih nyaman.

Ok, itu dulu omong kosong saya. Besok lanjut lagi :-)

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.