Ejemplo n.º 1
0
        public SBOAddon_DB() : base()
        {
            ors = eCommon.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset) as SAPbobsCOM.Recordset;
            try
            {
                // try see if table exist
                ors.DoQuery("SELECT * FROM [@TWM_SETTINGS]");
                while (!ors.EoF)
                {
                    if (ors.Fields.Item("U_TWM_Settings_Type").Value.ToString() == "Export_XML_Path")
                    {
                        _settings_xml_Path = ors.Fields.Item("U_TWM_Settings_Value").Value.ToString();
                    }
                    else if (ors.Fields.Item("U_TWM_Settings_Type").Value.ToString() == "Save_PO_As_Draft")
                    {
                        _settings_Save_PO_Draft = (ors.Fields.Item("U_TWM_Settings_Value").Value.ToString() == "1");
                    }
                    else if (ors.Fields.Item("U_TWM_Settings_Type").Value.ToString() == "Save_SO_As_Draft")
                    {
                        _settings_Save_SO_Draft = (ors.Fields.Item("U_TWM_Settings_Value").Value.ToString() == "1");
                    }

                    ors.MoveNext();
                }
            }
            catch
            {
                //One or more metadata not found. try to recreate them.
                if (ors != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(ors);
                    ors = null;
                    GC.Collect();
                }

                Tables = new B1DbTable[] {
                    new B1DbTable("@TWM_SETTINGS", "Global Settings table", BoUTBTableType.bott_NoObject)
                };

                Columns = new B1DbColumn[]
                {
                    new B1DbColumn("@TWM_SETTINGS", "TWM_Settings_Type", "Setting Type", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 250, new B1WizardBase.B1DbValidValue[0], -1),
                    new B1DbColumn("@TWM_SETTINGS", "TWM_Settings_Value", "Setting Value", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 250, new B1WizardBase.B1DbValidValue[0], -1),
                    new B1DbColumn("@TWM_SETTINGS", "TWM_Settings_AddOn", "Setting for which AddOn", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 250, new B1WizardBase.B1DbValidValue[0], -1)
                };

                try
                {
                    eCommon.SBO_Application.MetadataAutoRefresh = false;
                    this.Add(eCommon.oCompany);
                    addDefaultSettings();
                }
                catch (Exception ex) { eCommon.SBO_Application.MessageBox(ex.Message); }
                finally
                {
                    eCommon.SBO_Application.MetadataAutoRefresh = true;
                }
            }

            if (ors != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(ors);
                ors = null;
                GC.Collect();
            }
        }
Ejemplo n.º 2
0
        private B1DbColumn[] colunasDB()
        {
            var Columns = new B1DbColumn[] {
                //Cond.Pgto - CamposUsuarios
                new B1DbColumn("OCTG", "DiscIncl", "Abater Comissao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCTG", "Sample", "Amostra", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCTG", "AdvPmt", "Pgto Antecipado", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCTG", "Discount", "Desconto", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OCTG", "ToAppr", "Sujeito a aprovação", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)

                //Regioes - CamposUsuarios
                , new B1DbColumn("OTER", "MinOrderAmt", "Valor minimo pgto", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "MinInstAmt", "Valor minimo Parcela", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "DiscFrght", "Desconto", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "MaxIntr", "Qtd dias fatura", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "DiaEntr", "Dias para Entrega", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "DiaMax", "Dia Máximo Fat", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "MaxIntr", "Qtd dias fatura", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OTER", "DiscIncl", "Abater Comissao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay1", "Domingo", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay2", "Segunda-feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay3", "Terça-feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay4", "Quarta-Feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay5", "Quinta-Feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay6", "Sexta-Feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "WDay7", "Sábado", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OTER", "MinInvIntr", "Qtd min dia entrega", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)

                //Clientes - CamposUsuarios
                , new B1DbColumn("OCRD", "WDay1", "Domingo", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "WDay2", "Segunda-feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "WDay3", "Terça-feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "WDay4", "Quarta-Feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "WDay5", "Quinta-Feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "WDay6", "Sexta-Feira", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "WDay7", "Sábado", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OCRD", "TextPV", "Texto para PV", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OCRD", "IDAFV", "Sábado", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OCRD", "Transp", "Transportadora", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] {}, -1)


                //Pedido de Venda
                , new B1DbColumn("ORDR", "IDAFV", "Id do AFV", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ORDR", "TpPedido", "Tipo de Pedido", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ORDR", "DtEntregaPL", "Data de Entrega Planejada", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ORDR", "MotBon", "Motivo de Bonificação", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ORDR", "AproInterno", "Aprovação Interna", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ORDR", "MotAprov", "Motivo para aprovação", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ORDR", "Campanha", "Campanha", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)

                , new B1DbColumn("RDR1", "DescPerm", "Desconto Permitido", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("RDR1", "DescAbat", "Desconto Abatido de Comiss", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("RDR1", "PercComiss", "Percentual Comiss", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("RDR1", "Campanha", "Campanha", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)


                //Tabela de Preços - CamposUsuarios
                , new B1DbColumn("ITM1", "MinOrderAmt", "Valor min pgto", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ITM1", "MinInstAmt", "Valor min Parce", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ITM1", "DiscFrght", "Desconto", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("ITM1", "DiscIncl", "Abater Comissao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)

                //Descontos por volume
                , new B1DbColumn("ITM1", "DiscIncl", "Abater Comissao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("SSP2", "DiscIncl", "Abater Comissao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)

                //Lista de Preço
                , new B1DbColumn("OPLN", "DescMax", "Desconto Maximo", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("OPLN", "AbatComiss", "Abat Comissão", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)

                //Catalogo de PN
                , new B1DbColumn("OSCN", "ExportAFV", "Exporta AFV", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)

                //Motivos de n visita e n venda
                , new B1DbColumn("@RSMV_OSLR", "Tipo", "Tipo", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OSLR", "Descricao", "Descricao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)

                //Motivo de Bonificação
                , new B1DbColumn("@RSMV_OBON", "Descricao", "Descricao", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, new B1DbValidValue[] {}, -1)

                //Vendedores
                , new B1DbColumn("OSLP", "TabletPwd", "Senha Tablet", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OSLP", "MinVer", "Versao Minima", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OSLP", "MaxVer", "Versao Maxima", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)

                //Grupos de comissões
                , new B1DbColumn("OCOG", "PriceList", "CodigoTabelaPreco", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OCOG", "DiscFrom", "Descontono inicial", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OCOG", "DiscTo", "Desconto Final", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)

                //Tipo de Envio
                , new B1DbColumn("OSHP", "GerAtividade", "GerAtividade", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OSHP", "Atividade", "Atividade", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OSHP", "Tipo", "Tipo", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("OSHP", "Assunto", "Assunto", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)

                //Periodo e desconto por quantidade
                , new B1DbColumn("OSPP", "AbatComiss", "Abater da Comissão", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)

                //Tipo de Pedido
                , new B1DbColumn("@RSMV_OSLT", "Descricao", "Descrição", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OSLT", "DocGerado", "Doc Gerado", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OSLT", "GerOpor", "Gera oportunidade documento", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OSLT", "Utilizacao", "Utilização", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)

                //Mapeamento de Utilização
                , new B1DbColumn("@RSMV_MAPUTIL_DET", "UsageDefault", "Usage Default", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_MAPUTIL_DET", "ITMGrupo", "Grupo de Itens", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_MAPUTIL_DET", "DescrGrupo", "Descrição do Grupo ", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 100, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_MAPUTIL_DET", "Usage", "Utilização", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, new B1DbValidValue[] {}, -1)

                //Tributacao (TUser)
                , new B1DbColumn("@RSMV_OTXR", "CNAE", "Codigo CNAE", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "BPCode", "CodigoCliente", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "NCM", "NCM do Prod", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "CEST", "Codigo CEST", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "State", "UF de Destino", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] {}, -1)

                , new B1DbColumn("@RSMV_OTXR", "FP", "Zona Franca", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)
                , new B1DbColumn("@RSMV_OTXR", "Exmp", "Isento", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, new B1DbValidValue[] { new B1DbValidValue("N", "Não"), new B1DbValidValue("Y", "Sim") }, -1)

                , new B1DbColumn("@RSMV_OTXR", "IPIRate", "Aliquota IPI", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "ICMSRate", "Aliquota ICMS", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "ICMSRed", "RedICMS", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "ICMSIntRate", "Aliq.Int.ICMS", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "ICMSTSMrg", "MargemICMS", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 10, new B1DbValidValue[] {}, -1)
                , new B1DbColumn("@RSMV_OTXR", "ICMSTSRed", "Reducao ICMS ST", BoFieldTypes.db_Float, BoFldSubTypes.st_Percentage, 10, new B1DbValidValue[] {}, -1)

                //ParÂmetros de configuração
                , new B1DbColumn("@RSMV_PARAM", "Valor", "Valor", BoFieldTypes.db_Float, BoFldSubTypes.st_Price, 10, new B1DbValidValue[] {}, -1)
            };

            return(Columns);
        }
Ejemplo n.º 3
0
        public SBOAddon_DB() : base()
        {
            SAPbobsCOM.Recordset ors = eCommon.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset) as SAPbobsCOM.Recordset;

            try
            {
                //Check for required UDF, UDT and UDOs
                ors.DoQuery("SELECT TOP 1 U_TWM_ADDID FROM CRD1");
                ors.DoQuery("SELECT TOP 1 U_TWM_SSOUTLET FROM OCRD");
                ors.DoQuery("SELECT TOP 1 U_TWM_B2BRC, U_TWM_DFIBC, U_TWM_PODTE FROM OINV");
                ors.DoQuery("SELECT TOP 1 U_TWM_CSITC FROM INV1");
                ors.DoQuery("SELECT TOP 1 U_TWM_B2BC, U_TWM_FLNM, U_TWM_DRCT, U_TWM_OBTP, U_TWM_STTS, U_TWM_RMRK FROM [@TWM_OB2BL]");
                ors.DoQuery("SELECT TOP 1 U_TWM_OBTP, U_TWM_ENTR, U_TWM_LNUM, U_TWM_SSEQ, U_TWM_STTS, U_TWM_QATY, U_TWM_RMRK FROM [@TWM_B2BL1]");
                ors.DoQuery("SELECT TOP 1 U_TWM_CARDC, U_TWM_CARDN, U_TWM_XCUST, U_TWM_XVEND, U_TWM_RMRKS FROM [@TWM_OB2BS]");
                ors.DoQuery("SELECT TOP 1 U_TWM_ITYPE, U_TWM_PRTCL, U_TWM_ADDRS, U_TWM_PORT, U_TWM_USERN, U_TWM_USRPW, U_TWM_FOLDR, U_TWM_ARCHF, U_TWM_RFLDR FROM [@TWM_B2BS1]");
                ors.DoQuery("SELECT TOP 1 U_ADDON, U_Key, U_Dcrption, U_KeyValue, U_UpdateOn, U_UpdateBy FROM [@TWM_CSTSET]");
                ors.DoQuery("SELECT TOP 1 U_TWM_CSITM FROM [@TWM_DFICN]");

                ors.DoQuery("SELECT Count(*) FROM  OUDO WHERE Code in ('TWM_OB2BL', 'TWM_OB2BS', 'TWM_DFICN')");
                if ((int)ors.Fields.Item(0).Value < 2)
                {
                    throw new Exception("UDO");
                }
            }
            catch
            {
                //One or more metadata not found. try to recreate them.
                if (ors != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(ors);
                    ors = null;
                    GC.Collect();
                }

                eCommon.SBO_Application.StatusBar.SetText(SBOAddon.gcAddOnName + " - Setting User Objects.", BoMessageTime.bmt_Long, BoStatusBarMessageType.smt_Warning);
                Tables = new B1DbTable[] {
                    new B1DbTable("@TWM_OB2BL", "B2B Log", BoUTBTableType.bott_Document)
                    , new B1DbTable("@TWM_B2BL1", "B2B Detail Log", BoUTBTableType.bott_DocumentLines)
                    , new B1DbTable("@TWM_OB2BS", "B2B Master Data", BoUTBTableType.bott_MasterData)
                    , new B1DbTable("@TWM_B2BS1", "B2B Folders", BoUTBTableType.bott_MasterDataLines)
                    , new B1DbTable("@TWM_CSTSET", "TWM Customisation setting", BoUTBTableType.bott_NoObject)
                    , new B1DbTable("@TWM_DFICN", "DFI Catalog Number", BoUTBTableType.bott_MasterData)
                };

                Columns = new B1DbColumn[]
                { new B1DbColumn("@TWM_CSTSET", "ADDON", "Add On Name", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_CSTSET", "Key", "Setting Key", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_CSTSET", "Dcrption", "Setting Description", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_CSTSET", "KeyValue", "Key Value", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_CSTSET", "UpdateOn", "Last Update On", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_CSTSET", "UpdateBy", "Last Update By", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 30, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BL", "TWM_B2BC", "B2BCode", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 30, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BL", "TWM_FLNM", "FileName", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BL", "TWM_DRCT", "Direction", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 1, true, new B1WizardBase.B1DbValidValue[] { new B1WizardBase.B1DbValidValue("E", "Export"), new B1WizardBase.B1DbValidValue("I", "Import") }, -1)
                  , new B1DbColumn("@TWM_OB2BL", "TWM_OBTP", "Object Type", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 15, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BL", "TWM_STTS", "Status", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 1, true, new B1WizardBase.B1DbValidValue[2] {
                        new B1WizardBase.B1DbValidValue("F", "Failed"), new B1WizardBase.B1DbValidValue("S", "Success")
                    }, -1)
                  , new B1DbColumn("@TWM_OB2BL", "TWM_RMRK", "Remark", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_OBTP", "Object Type", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 21, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_ENTR", "DocEntry", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 8, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_LNUM", "LineNum", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 8, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_SSEQ", "Source Line", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 8, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_QATY", "Quantity", BoFieldTypes.db_Float, BoFldSubTypes.st_Quantity, 25, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_STTS", "Status", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 1, true, new B1WizardBase.B1DbValidValue[] { new B1WizardBase.B1DbValidValue("F", "Failed"), new B1WizardBase.B1DbValidValue("S", "Success") }, -1)
                  , new B1DbColumn("@TWM_B2BL1", "TWM_RMRK", "Remark", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BS", "TWM_CARDC", "CardCode", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 25, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BS", "TWM_CARDN", "CardName", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 100, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BS", "TWM_XCUST", "External Cust Code", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 30, true, new B1WizardBase.B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BS", "TWM_XVEND", "External Vend Code", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 30, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_OB2BS", "TWM_RMRKS", "Remarks", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_ITYPE", "Int Type", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 1, true, new B1DbValidValue[] { new B1DbValidValue("I", "Inbound"), new B1DbValidValue("O", "OutBound") }, 0)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_PRTCL", "Protocol", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 1, true, new B1DbValidValue[] { new B1DbValidValue("0", "Local"), new B1DbValidValue("1", "FTP"), new B1DbValidValue("2", "sFTP") }, 0)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_FOLDR", "Folder", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_ARCHF", "Archive Folder", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_ADDRS", "Address", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_PORT", "Port", BoFieldTypes.db_Numeric, BoFldSubTypes.st_None, 4, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_USERN", "UserName", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_USRPW", "Password", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_B2BS1", "TWM_RFLDR", "Remote Folder", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 254, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("CRD1", "TWM_ADDID", "Xternal ID", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 25, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("OCRD", "TWM_SSOUTLET", "Shengsiong Branch Code", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 10, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("OINV", "TWM_B2BRC", "B2B Record", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 1, true, new B1DbValidValue[] { new B1DbValidValue("N", "No"), new B1DbValidValue("Y", "Yes") }, 0)
                  , new B1DbColumn("OINV", "TWM_DFIBC", "B2B: DFI Business Code", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("OINV", "TWM_PODTE", "B2B: Cust PO Date", BoFieldTypes.db_Date, BoFldSubTypes.st_None, 8, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("INV1", "TWM_CSITC", "Customer ItemCode", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 50, true, new B1DbValidValue[0], -1)
                  , new B1DbColumn("@TWM_DFICN", "TWM_CSITM", "CSGroup Item Code", BoFieldTypes.db_Alpha, BoFldSubTypes.st_None, 20, true, new B1DbValidValue[0], -1) };

                Udos = new B1Udo[]
                {
                    new B1Udo("TWM_OB2BL", "B2B Log", "TWM_OB2BL", new string[] { "TWM_B2BL1" }, BoUDOObjType.boud_Document, BoYesNoEnum.tYES, BoYesNoEnum.tNO, BoYesNoEnum.tYES, BoYesNoEnum.tNO, BoYesNoEnum.tNO, BoYesNoEnum.tNO, BoYesNoEnum.tNO, null, new string[] { "DocEntry" }, new string[] { "DocNum" })
                    , new B1Udo("TWM_OB2BS", "B2B Master", "TWM_OB2BS", new string[] { "TWM_B2BS1" }, BoUDOObjType.boud_MasterData, BoYesNoEnum.tYES, BoYesNoEnum.tNO, BoYesNoEnum.tYES, BoYesNoEnum.tNO, BoYesNoEnum.tNO, BoYesNoEnum.tNO, BoYesNoEnum.tNO, null, new string[] { "Code" }, new string[] { "Name" })
                    , new B1Udo("TWM_DFICN", "DFI Catalog Number", "TWM_DFICN", new string[0], BoUDOObjType.boud_MasterData, BoYesNoEnum.tYES, BoYesNoEnum.tYES, BoYesNoEnum.tNO, BoYesNoEnum.tNO, BoYesNoEnum.tNO, BoYesNoEnum.tYES, BoYesNoEnum.tNO, "ATWM_DFICN", new string[] { "Code" }, new string[] { "Name" })
                };

                eCommon.SBO_Application.MetadataAutoRefresh = false;
                try
                {
                    this.Add(eCommon.oCompany);
                }
                catch (Exception Ex)
                {
                    eCommon.SBO_Application.StatusBar.SetText(Ex.Message, BoMessageTime.bmt_Short, BoStatusBarMessageType.smt_Error);
                }
                finally
                {
                    eCommon.SBO_Application.MetadataAutoRefresh = true;
                }
            }

            if (ors != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(ors);
                ors = null;
                GC.Collect();
            }
        }